请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

为什么我执行Edit的onPress事件,子组件UU里面的Text没有变化,一直显示0

https://img1.sycdn.imooc.com/szimg//5922b42900011c5d04930610.jpg

为什么我执行Edit的onPress事件,子组件UU里面的Text没有变化,一直显示0,子组件的state不能随props而改变

正在回答 回答被采纳积分+3

3回答

Scott 2017-05-23 09:08:36

不一样的,父组件的点击是修改的父组件的 state,不会影响到子组件的 state


子组件的 状态,可以继承自父组件传递的 state 属性,但是在 contructor 里面,只会初始化安装会被调用一次,之后便与父组件相互独立了,互不干扰了。


所以,可以 <Text>{this.props.count}</Text> 换成 <Text>{this.props.num}</Text> 来同步父组件的 state 变化

0 回复 有任何疑惑可以回复我~
  • 提问者 慕粉3921807 #1
    可是老师,你的Item模块就是这么写的啊
    回复 有任何疑惑可以回复我~ 2017-05-24 12:11:15
  • Scott 回复 提问者 慕粉3921807 #2
    我这样写,是为了加载子组件时候能顺利拿到父组件的数据 row,但是我拿到后,直接应用在了状态中,也就是在 constructor 中,自此之后,Item 里面的 row 跟父组件的 row 再无关系了,只用了一次,再不用了。
    
    你的例子的代码,不仅是从父组件中拿到 count,且你还希望父组件的 count,能持续不断的把自己 count 的变化,通过 num 再更新子组件的 haha,这是做不到的,这时候子父组件除了第一次的继承传递,就再没关系了
    回复 有任何疑惑可以回复我~ 2017-05-25 11:13:48
提问者 慕粉3921807 2017-05-23 01:40:30

https://img1.sycdn.imooc.com/szimg//592322590001bb6e06900597.jpg

老师,你也是这样子写的啊,为什么我的这么写就错了?

0 回复 有任何疑惑可以回复我~
Scott 2017-05-22 23:29:38

UU ,这名字好听

他没变化是因为它使用的是自身的 state,并没有与父组件的 num 保持同步

换用这个代替试试:


<Text>{this.props.num}</Text>

0 回复 有任何疑惑可以回复我~
  • 提问者 慕粉3921807 #1
    老师,你也是这样子写的啊,为什么我的这么写就错了?
    回复 有任何疑惑可以回复我~ 2017-05-23 01:40:52
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信