2 回答

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊
父組件:
當(dāng)您更新組件時(shí),actionToPerform您的組件不知道并且不會(huì)重新呈現(xiàn),您需要將其保存在其state:
state = {
actionToPerform: ""
}
updateState(actionToPerform){
this.setState({ actionToPerform })
}
<button onClick={() => this.updateState('new')}>Create new Shoppinglist</button>
<button onClick={() => this.updateState('edit')}>Edit Shoppinglist</button>
<Edit action={actionToPerform}/>
現(xiàn)在,當(dāng)您單擊其中一個(gè)按鈕時(shí),狀態(tài)的值會(huì)更新并且組件會(huì)重新呈現(xiàn),將新值傳遞給子組件。
子組件:
您不應(yīng)該從 設(shè)置狀態(tài)的初始值props,請(qǐng)參閱反模式:無(wú)條件地將道具復(fù)制到狀態(tài)
您甚至可以將它們?nèi)縿h除,因?yàn)槟梢愿鶕?jù)props值進(jìn)行條件渲染:
export default class Edit extends React.Component {
render() {
return this.props.actionToPerform === "new" ? (
<div>new Shoppinglist</div>
) : this.props.actionToPerform === "edit" ? (
<div>edit</div>
) : (
<div>nothing to show</div>
);
}
}

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超6個(gè)贊
您應(yīng)該使用組件中的狀態(tài),而不是在組件Edit中使用狀態(tài)parentt,并將該狀態(tài)作為 prop 傳遞給子(編輯)組件并使用它。
父類.js
actionState = (action) => {
if(action === 'new'){
this.setState({ actionToPerform: 'new' })
} else{
this.setState({ actionToPerform: 'edit' })
}
}
render() {
return (
<div>
<button onClick={() => this.actionState('new')}>Create new Shoppinglist</button>
<button onClick={() => this.actionState('edit')}>Edit Shoppinglist</button>
<Edit action={this.state.actionToPerform}/>
</div>
)
}
孩子.js
export default class Edit extends React.Component {
showTitle() {
if(this.props.actionToPerform === 'new'){
return <div>new Shoppinglist</div>
} else if(this.props.actionToPerform === 'edit'){
return <div>edit</div>
} else{
return <div>nothing to show</div>
}
}
render() {
return (
this.showTitle()
)
}
添加回答
舉報(bào)