2016-08-24 72 views
1

我目前正在初始化父组件中的子组件,并将它们放入数组中。我将一个函数传递给刚刚获得状态的儿童道具。如何强制子组件重新渲染?

<QuestionContainer 
    error={() => this.state.currentError } 
/> 

的问题是,当我在父做this.setState({ currentError: x })孩子不会重新描绘,因为错误的道具实际上并没有改变。我试过this.forceUpdate无济于事。

我知道我可以在某种程度上,我不需要的子组件初始化成一个阵列设计的,但我不知道我怎么会强制重新呈现在这种情况下。

回答

2
<QuestionContainer 
    error={() => this.state.currentError } 
    ref="container" 
/> 

然后

this.refs.container.forceUpdate() 

说不上来,如果这是寿

0

更好的方法你也可以在父母的状态的一些计数器变量每次你setState所以如果你通过它的时候加一直到孩子应该触发孩子的移居。

1

目前尚不清楚为什么你通过函数返回currentError的值,而不仅仅是值本身。你不能只是通过这样的:

<QuestionContainer error={this.state.currentError} />

,然后在QuestionContainer的渲染,使用它像如

render() { 
    return (
    <div>{this.props.error}</div> 
) 
} 

如果你想你的榜样工作,你需要调用的函数在QuestionContainer

render() { 
    return (
    <div>{this.props.error()}</div> 
) 
} 
+0

您可能要包括一些'无功自我=创建数组this'之前。 – wintvelt