react 組件之間通訊傳值的多種方法實現

react組件傳值,大概有下面幾種方法:

  • props
  • context
  • redux
  • react-router 路由切換時通過url傳值(少量非機密數據,其實也是props傳)。

今天記錄一下通過redux來傳值的實現。

我們先寫一個createAction的函數:

export function setAnalysisParams(params) {
  return {
    type: SET_ANALYSIS_PARAMS,
    result: params
  }
}

在reducer里面:

export default function reducer(state = initialState, action = {}) {
  switch (action.type) {
    case SET_ANALYSIS_PARAMS:
      return {
        ...state,
        params: action.result
      };
    default:
      return state;
  }

當action觸發reducer時,會把action的result傳給reducer的params。寫好這里,我們就可以在組件中傳給adction params了。

@connect(
  () => ({
  }),
  {
    setAnalysisParams
  })

先把actionCreator拿出來。
在組件的某個需要的地方,可以直接向它傳我們要放進redux里的數據:

this.props.setAnalysisParams({
        someModels
      });

這時,我們就可以在另外一個組件中取到剛剛放進去的數據。
另外一個組件:

@connect(
  state => ({
    example: state.clinic.params
  }),
  {}
)

把redux中的params數據映射到example上。
下面,就可以用了:

 const {someNames, ...} = this.props.example; //取出數據名

以上,就實現了redux來傳值的方法。適合非父子組件且嵌套關系復雜的組件之間數據的傳遞。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 做React需要會什么? react的功能其實很單一,主要負責渲染的功能,現有的框架,比如angular是一個大而...
    蒼都閱讀 14,799評論 1 139
  • 今天來看一下react組件之間是怎么進行通訊的。react推崇的是單向數據流,自上而下進行數據的傳遞,但是由下而上...
    親親qin閱讀 6,018評論 2 12
  • 學習必備要點: 首先弄明白,Redux在使用React開發應用時,起到什么作用——狀態集中管理 弄清楚Redux是...
    賀賀v5閱讀 8,934評論 10 58
  • 前言 本文 有配套視頻,可以酌情觀看。 文中內容因各人理解不同,可能會有所偏差,歡迎朋友們聯系我討論。 文中所有內...
    珍此良辰閱讀 11,922評論 23 111
  • 我抬頭仰望蒼窘 只見 月也朦朧,夜也朦朧 我閉目思緒放空 忽覺 山也重重,水也重重 生活是永恒的寒冬 對我 露出鄙...
    一見如故_再見陌路閱讀 234評論 0 0