3 回答

TA貢獻1818條經驗 獲得超8個贊
React的哲學是道具應該是不變的并且自上而下的。這意味著父母可以將喜歡的任何道具值發送給孩子,但是孩子不能修改自己的道具。您要做的是對傳入的道具做出反應,然后根據需要修改孩子的狀態。
因此,您永遠不會更新自己的道具或父母的道具。曾經 您只能更新自己的狀態,并對父母給您的prop值做出反應。
如果您想讓某個子動作發生,而該子動作會修改狀態中的某些內容,那么您要做的就是將回調傳遞給該子動作,該子動作可以在給定的動作上執行。然后,此回調可以修改父級的狀態,從而可以在重新渲染時向子級發送不同的道具。

TA貢獻1785條經驗 獲得超8個贊
組件本身會更改其狀態,并且不會更改其自身,而是會更改兒童的道具。
<Parent>
<Child name={ this.state.childName } />
</Parent>
父母可以更改自己的狀態并更改孩子的名字,但這會更改其孩子的道具。
edit1:要從子級向父級調用事件,您應該向子級傳遞一個事件處理程序,如下所示:
var Child = React.createClass({
render: function() {
return (<button onClick={ this.props.onClick }>Hey</button>);
}
});
var Parent = React.createClass({
onChildClick: console.log.bind(console), // will print the event..
render: function() {
return (<Child onClick={ this.onChildClick } />);
}
});
React.renderComponent(<Parent />, document.body);
在此代碼中,當您單擊“子級”按鈕時,它將把事件傳遞給其父級。傳遞事件的目的是使組件分離。也許在您的應用程序中您需要執行此特定操作,但是在另一個應用程序中,您將有不同的用法。
添加回答
舉報