2017-10-07 96 views
0

我有一個區段組件在那裏我有:穿過狀態兒童在反應

state = { 
    text: '', 
} 

render() { 
    return (
    <div> 
     <SpecialTextBox text={this.state.text}></SpecialTextBox> 
    </div> 
} 

我能夠訪問this.state.text的子組件(SpecialTextBox),在那裏我可以訪問它,但改變它似乎並沒有更新父級的值。

我正在做setState上按鍵的孩子更新this.state爲孩子,但不是父母。

我誤解了什麼?

+0

讓我猜猜 - 你是傳遞一個原始值,因此它的副本?然後當你更新它 - 當然沒有發生在原件上。 – c69

+2

查看https://reactjs.org/docs/lifting-state-up.html和https://reactjs.org/docs/forms.html。 –

+1

@ c69我現在很好奇。你能澄清你的意思嗎?如果使用'this.setState'來更改'this.state.text',一個字符串,爲什麼不更新'SpecialTextBox'的'this.props.text'? – Andrew

回答

0

是,按照該陣營文檔,

狀態類似於道具,但它是私有的,由組件完全控制。

因此,您的子組件狀態已更新,但不是父項的狀態。如果你想更新父的狀態,你可以

  1. 擡起狀態到母部件,並通過道具功能,以您的子組件將在父組件更新狀態,也是子組件的狀態因爲它將作爲道具收到父母的狀態。

看到這裏Lifting State Up