亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

根據子組件的更改更新 Redux Store

根據子組件的更改更新 Redux Store

揚帆大魚 2022-10-13 10:55:09
我是 React 和學習 Redux 的新手。我有一個包含兩個子組件的容器組件。在其中一個子組件(標題組件)中,我有五個按鈕。它的同級組件(Body 組件)根據在 Header 組件中單擊的按鈕呈現不同的視圖。我知道我可以通過保持父組件中的狀態并擁有一個事件處理函數來實現這一點,該函數在單擊按鈕時接收回調函數,但我正在嘗試為更復雜的應用程序學習 Redux。為了實現這一點,我在 Parent 組件中引入了一個處理函數,它根據從傳遞給 Header 組件的回調函數接收到的數據調度一個動作,以更改存儲,從而從 Body 組件呈現適當的視圖。這是代碼示例:父組件:...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);我的問題是:代碼有什么問題?如果我希望組件成為啞組件,那么在組件樹中更深入地調度操作的最佳方法是什么?
查看完整描述

1 回答

?
慕沐林林

TA貢獻2016條經驗 獲得超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 }

問:如果我希望組件成為啞組件,那么在組件樹中更深入地調度操作的最佳方法是什么?

A :您可以mapDispatchToProps在將所有內容作為道具傳遞時使用它仍然被視為愚蠢的組件。


查看完整回答
反對 回復 2022-10-13
  • 1 回答
  • 0 關注
  • 114 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號