揚帆大魚
2022-10-13 10:55:09
我是 React 和學習 Redux 的新手。我有一個包含兩個子組件的容器組件。在其中一個子組件(標題組件)中,我有五個按鈕。它的同級組件(Body 組件)根據(jù)在 Header 組件中單擊的按鈕呈現(xiàn)不同的視圖。我知道我可以通過保持父組件中的狀態(tài)并擁有一個事件處理函數(shù)來實現(xiàn)這一點,該函數(shù)在單擊按鈕時接收回調(diào)函數(shù),但我正在嘗試為更復雜的應用程序學習 Redux。為了實現(xiàn)這一點,我在 Parent 組件中引入了一個處理函數(shù),它根據(jù)從傳遞給 Header 組件的回調(diào)函數(shù)接收到的數(shù)據(jù)調(diào)度一個動作,以更改存儲,從而從 Body 組件呈現(xiàn)適當?shù)囊晥D。這是代碼示例:父組件:...const mapStateToProps = state => { return { selectedDS: state.selectedDS };};const mapDispatchToProps = dispatch => ({ changeDs: selectedDS => dispatch(changeDs(selectedDS)), dispatch});class Main extends Component { handleClick = button => { this.props.dispatch(changeDs(button)); }; render() { return ( <> <div className="container"> <div id="header" className="row"> <Header handleClick={this.handleClick} /> </div> <div className="row"> <DsComponent ds={this.props} /> </div> </div> </> ); }}export default connect( mapStateToProps, mapDispatchToProps)(Main);我的問題是:代碼有什么問題?如果我希望組件成為啞組件,那么在組件樹中更深入地調(diào)度操作的最佳方法是什么?
1 回答

慕沐林林
TA貢獻2016條經(jīng)驗 獲得超9個贊
問題 :
是你的reducer,你設置了錯誤的商店價值,你正在設置商店價值
var payload_ds = action.payload;
return Object.assign({}, state, { payload_ds });
// above line create json object something like this
// { selectedDS: 0 , payload_ds: { selectedDS: 4 } }
解決方案 :
var payload_ds = action.payload.selectedDS;
return Object.assign({}, state, { selectedDS: payload_ds }); // <----- HERE
// OR
// as there is only one field you can also use this one
return { selectedDS: payload_ds }
問:如果我希望組件成為啞組件,那么在組件樹中更深入地調(diào)度操作的最佳方法是什么?
A :您可以mapDispatchToProps
在將所有內(nèi)容作為道具傳遞時使用它仍然被視為愚蠢的組件。
添加回答
舉報
0/150
提交
取消