我是React的新手,我決定構建一些簡單的計算器來練習它的基礎知識。然而,我很難理解信息流背後的邏輯,或者有一種方法讓子組件執行邏輯並以自然的方式更新父項。使用子組件中的函數更改父組件的狀態
例如,這是我的計算器的基本結構:
class Calculator extends React.Component {
render() {
return (
<div className="calculator-main">
<Screen numberOnScreen={this.state.numberOnScreen}/>
<NumberButton number={7} />
<NumberButton number={8} />
<NumberButton number={9} />
<OperatorButton operator="plus" view="-"/>
....
</div>
)
}
}
class Screen extends React.Component {
constructor(props) {
super(props);
}
render() {
return (
<div className="screen">{new Intl.NumberFormat().format(this.props.numberOnScreen)}</div>
);
}
};
class NumberButton extends React.Component {
constructor(props) {
super(props);
}
render() {
const zeroClass = this.props.number === 0 ? " zero" : "";
return (
<button type="button" className={"number" + zeroClass}>{this.props.number}</button>
);
}
};
所以我知道:
- 我可以創建功能裏面計算器,並將它傳遞爲道具,以 按鈕組件,並在onClick上調用它。 (但它只是覺得奇怪)。
- 在Calculator組件中創建一個事件監聽器,在按鈕組件中創建 函數,並通過事件 觸發該值; (但感覺是人造的)。
- 使用某種全球商店?
但是,有沒有自然的反應方式來做到這一點?
謝謝!
你能否詳細說明你的意思是 '自然' 是什麼?我認爲反應的自然方式是將函數從父組件傳遞給子組件,如以下文章中所述:https://facebook.github.io/react/docs/thinking-in-react.html –
是的,我知道這是React背後的邏輯,但是在父組件中而不是在按鈕組件中聲明所有我的函數感覺很混亂......所以我的問題基本上是,「就是這樣」,你需要工作用這種流程,或者是有一種「反應」的方式來把你的邏輯放在子組件中,並更新父進程的狀態。 – Sveta
從技術上講,你可以使用像redux或flux這樣的狀態管理庫來存儲父組件的狀態並編寫邏輯來改變它在子組件中的狀態,所以你不必在父組件中編寫任何邏輯。 –