将Redux存储作为全局状态时的React组件重用性问题

将Redux存储作为全局状态时的React组件重用性问题,redux,react-redux,reusability,react-component,code-reuse,Redux,React Redux,Reusability,React Component,Code Reuse,我在React/Redux应用程序中遇到了一个可重用性难题。我已经编写了可重用的React组件,比如下拉列表和滑块,并且我正在我的Redux存储中存储状态值。现在我明白了,只要组件的任何JSX实例改变状态,该组件的所有其他实例也会改变状态。它们都开始互相模仿,而我需要它们独立运作。我还想在组件的不同实例中以不同的方式初始化状态,但我想不出一种方法来实现这一点。例如,对于滑块,我希望滑块范围的起始值和结束值在组件的不同实例中有所不同。通过React的普通道具系统很容易做到这一点,但我对如何通过Re

我在React/Redux应用程序中遇到了一个可重用性难题。我已经编写了可重用的React组件,比如下拉列表和滑块,并且我正在我的Redux存储中存储状态值。现在我明白了,只要组件的任何JSX实例改变状态,该组件的所有其他实例也会改变状态。它们都开始互相模仿,而我需要它们独立运作。我还想在组件的不同实例中以不同的方式初始化状态,但我想不出一种方法来实现这一点。例如,对于滑块,我希望滑块范围的起始值和结束值在组件的不同实例中有所不同。通过React的普通道具系统很容易做到这一点,但我对如何通过Redux做到这一点感到困惑

我对此进行了一些研究,似乎解决方案是在Redux存储中为组件的每个实例添加唯一的ID。但我需要详细说明在何处添加ID(减速器?动作创建者?组件?),以及如何使所有内容流动,以便正确的组件更改其状态

这是我的减速机:

    const INITIAL_STATE = {
      slots: 100, 
      step: 5,
      start: 35,
      end: 55,
    };

const sliderReducer = (state=INITIAL_STATE, action ) => {
    switch (action.type) {
      case "MIN_SELECTED":
        console.log("Min Selected");
        return {
          ...state,
          start: action.payload
        };
      case "MAX_SELECTED":
        console.log("Max Selected");
        return {
          ...state,
          end: action.payload
        };
      default:
          return state;
    }
}

export default sliderReducer;
这是我的行动创造者:

//Slider Minimum Value Selection Action Creator
export const selectMinValue = (value) => {
  return (dispatch) => {
    dispatch({
      type: "MIN_SELECTED",
      payload: value
    });
  };
};

//Slider Maximum Value Selection Action Creator
export const selectMaxValue = (value) => {
  return (dispatch) => {
    dispatch({
      type: "MAX_SELECTED",
      payload: value
    });
  };
};

组件代码太长,无法粘贴,但本质上是onDrag事件的事件处理程序和滑块的JSX。

对于这里遇到相同问题的任何人,我认为有许多库试图以过于复杂的方式解决这个问题。解决此问题的最干净、最简单的方法是将名称空间标识符与redux存储中组件的每个实例相关联。我找到的最好答案是:


祝你好运

对于这里遇到同样问题的任何人来说,在我看来,有许多图书馆试图以一种过于复杂的方式来解决这个问题。解决此问题的最干净、最简单的方法是将名称空间标识符与redux存储中组件的每个实例相关联。我找到的最好答案是:

祝你好运