javascript - Redux+React 管理两个(或多个)相同元素的状态。如何?

标签 javascript reactjs redux

大家好)我不明白如何管理两个完全相同的元素的状态(打开/关闭)(例如,日期选择器-“开始日期”和“结束日期”)。现在我做了两个操作 CHANGE_STATE1 和 CHANGE_STATE2,但是当我查看这段代码时,我会感到沮丧。 为了更好地理解一些例子: 第一个弹出窗口及其状态:

<Popover open={this.props.isOpenPopoverLeft}>

第二个弹出窗口:

<Popover open={this.props.isOpenPopoverRight}>

如您所见,元素完全相同,但状态不同。 如何正确地编写漂亮的代码?

最佳答案

我有这个确切的情况(开始和结束选择器),并使用 edge 参数解决它,引用两个常量,STARTEND.

您的 Action 创建器如下所示:

setDate(edge, date)

你的 React 类可能有这样的方法:

_onSelectDate(edge, date) {
  dispatch(setDate(edge, date));
}

并且您可以在渲染方法中绑定(bind),例如

render() {
    // holds the state in an object like { start: true, end: false }
    const popoverState = this.props.popoverState;

    return (
      <div>

        <Popover open={ popoverState[START] }>
            <DatePicker
              onChange={ this._onSelectDate.bind(this, START) }/>
        </Popover>

        <Popover open={ popoverState[END] }>
            <DatePicker
              onChange={ this._onSelectDate.bind(this, END) }/>
        </Popover>

      </div>
    );

}

根据布局的相似程度,您还可以映射像 [START, END] 这样的数组,或者使用一个将 edge 作为 prop 的新组件.

关于javascript - Redux+React 管理两个(或多个)相同元素的状态。如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34932740/

相关文章:

reactjs - 在内联样式中设置 RGBA 值

javascript - react /Redux : Can't access store variable as props from another component after action dispatched?

javascript - Redux Action 创建者获得 "TypeError: dispatch(...) is not a function"(附代码)?

javascript - 如何执行动态加载的 JavaScript block ?

javascript - 最新包含 Blink 的浏览器(如 Chrome、Opera)中的奇怪滚动行为

javascript - 正则表达式条件先行 JavaScript

reactjs - firebase 身份验证在刷新时延迟

reactjs - 分派(dispatch)操作后如何监听 Redux 存储中的特定属性更改

javascript - 类型错误 : middleware is not a function Error | v3 Migration Guide on React Redux Firebase

javascript - jquery - 返回子元素的数量,但对于不同的父元素