如何从Redux商店获取最新值到状态?

时间:2018-10-22 16:11:53

标签: javascript reactjs redux react-redux

我对Redux还是很陌生,我正在使用react-redux软件包并尝试实现一个简单的功能(尽管我知道这可以通过本地状态来处理),无论您在输入中键入什么显示在下面的<p></p>标签之间。

下面是代码:

Edit 73zq1yl2r1

我对第62行持怀疑态度,我访问最新状态以进行打印的方式是否正确?

1 个答案:

答案 0 :(得分:1)

顺便说一句好开始。我认为您在状态部分有些复杂。我为您修改了它,还删除了bind关键字,如果您使用最新的JS lang规范,我觉得不需要。

我使用Object.assign只是为了防止状态对象发生突变。通常可以通过使用ImmutableJS (请阅读文档)

来避免这种情况
// Reducer.
const updateReducer = (state = {text:''}, action) => {
  switch (action.type) {
    case UPDATE_TEXT:
      return Object.assign({}, state, { text: action.text });
    default:
      return state;
  }
};

const mapStateToProps = state => {
  return {
    text: state.text
  };
};

和渲染方法:

 render() {
    return (
      <div>
        <input type="text" onChange={(...arg) => this.changeText(...arg)} />
        <p>{this.props.text}</p>
      </div>
    );
  }

您的初始代码有什么问题?

您将每个按键的所有文本以及更新和增长的文本存储在数组中。在渲染时,仅显示最后一个(在数组中创建了不需要的副本,从未使用过),并省略了其他数组值。相反,只需将旧值替换为当前传入的值即可。

您的分叉代码here

快乐编码!