算法与数据结构+一点点ACM从入门到进阶吐血整理推荐书单

需要学习资源,请点击开挂教学楼

需要学习资源,请点击开挂教学楼

我有点新的反应,redux和sagas,但我掌握了一切。

我有一个component(Results.jsx)通过一个调用外部API的传奇来显示特定真实世界事件的结果:

 
  1. componentDidMount() {

  2. if (this.props.thing_id) {

  3. this.props.getResults(this.props.thing_id);

  4. }

  5. }

...

 
  1. const mapStateToProps = (state) => {

  2. return {

  3. prop1: state.apiReducer.thing_results.data1,

  4. prop2: state.apiReducer.thing_results.data2,

  5. fetching: state.apiReducer.fetching,

  6. error: state.apiReducer.error,

  7. };

  8. };

  9.  
  10. const mapDispatchToProps = (dispatch) => {

  11. return {

  12. getResults: (thing_id) => dispatch({type: "RESULTS_DATA_REFRESH", payload: thing_id})

  13. };

  14. };

一切都很好。直到......好吧,我正在使用一个标签式界面,让我动态添加一堆额外的实例,  Results.jsx 这样我就可以在同一个屏幕上看到一堆不同的结果集。

问题是当Results.jsx 组件的新实例  加载并从RESULTS_DATA_REFRESH 分派中  获取数据   时, 组件的所有实例  Results.jsx都会使用返回的数据进行更新。它们 显示相同的数据。

对于我的生活,我无法弄清楚如何让一个组件的特定实例听取它自己调度的结果。我以为这是传奇的工作方式?

任何帮助表示赞赏!

  1. const initialState = {

  2. fetching: false,

  3. error: null,

  4. thing_results: {

  5. data1: null,

  6. data2: null,

  7. },

  8. };

  9.  
  10. export default (state = initialState, action) => {

  11. switch (action.type) {

  12.  
  13. //...

  14.  
  15. case "RESULTS_DATA_REFRESH":

  16. return {...state, fetching: true};

  17. case "RESULTS_DATA_SUCCESS":

  18. return {...state, fetching: false, thing_results: action.results.data, error: null};

  19. case "RESULTS_DATA_FAILURE":

  20. return {...state, fetching: false, thing_results: null, error: action.error};

  21.  
  22. default:

  23. return state;

  24. }

  25. };

猜你喜欢

转载自blog.csdn.net/qq_31642819/article/details/88428150