我具体描述下问题产生的原因吧。现在有三个组件(暂定a、b、c)去实现一个用户认证的功能。a组件是父组件(相对b、c,a组件外面还有父组件),负责接收父组件传递下来用户的认证信息,b组件是用户用来填写信息的地方,c组件是表示用户的认证状态(未认证、审核、已认证、认证失败,分别对应状态为0,1,2,-1)。假如用户认证失败了,c组件内部会有一个按钮,让用户重新认证(切换b、c组件)。我一开始写的时候是这么想的:提取一个状态到a组件中(暂定show),show的值是根据a组件传递下来的认证状态(props)来确定的,通过show来改变应该展示哪个组件。当用户认证失败的时候点击c组件中的“重新认证”,通过回调函数改变父组件show的状态,完成b、c组件的切换。问题就出现在这个show上(暂定true显示b组件,false显示c组件),show的默认值为true(让用户输入信息)。我在a组件的componentWillReceiveProps里面去改变show的状态(didMount拿不到props,render里面不能操作state)。现在不论用户是否通过认证了,a组件加载的时候默认展示的都是b组件,因为componentWillReceiveProps没有被调用。刷新页面之后才会展示c组件。现在我能想到的解决办法就是让a组件去拿数据,然后确定show的状态。我想问下各位大神,还有更好的办法帮我实现这个功能吗?补一张图吧,看的清楚点
添加回答
举报
0/150
提交
取消