2016-08-24 69 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