React 父子组件间通信 子组件没有重新渲染

#1

我在使用ajax异步获取到数据后使用 setState重置父组件的状态 ,种种现象表明重置是生效的。但是使用this.state.** 给子组件传值并没有使子组件重新渲染(我子组件的数据使用的是this.props.data)

#2

要想重新渲染,必须调用this.setState()

#3

我试过使用 componentWillReceiveProps 调用子组件的this.setState() 但是没有产生效果

#4

贴个代码看看

#5

问题被我定位了 有问题的的代码 :

menuValue=(value)=>{
axios.get(’/getInfo/’+value)
.then(function(json){
alert(JSON.stringify(json));
this.setState({data:json});
}).bind(this)
}
出现的现象是 this.setState被调用,而data赋值失败

#6

bind(this) 位置错了

menuValue = (value)=>{
    axios.get('/getInfo/' + value).then(function(json) {
        alert(JSON.stringify(json));
        this.setState({
            data: json
        });
    }
    .bind(this))
}
#7

then()里面改成箭头函数。

#8

[quote=“teemo, post:5, topic:13423”]
而data赋值失败
关键是我在父组件中使用alert ,发现父组件的state是更新了的 ,我把拿到的值传给子组件 子组件没有更新

#9

因为是异步的,哈哈

#10

嗯嗯 你说的是对的 现在能更新数据了 谢谢大神

#11

请问能分享一下是怎么解决的吗?

#12

我现在也遇到这个问题了; 在父组件里通过setState改变数据之后, 子页面只有部分数据刷新了, 而另一部分数据并没有更新