使用本地状态作为Redux存储的输入值

时间:2019-09-29 09:58:38

标签: reactjs redux state

我开始学习redux,并且遇到了以下问题。因此,我有一个具有初始状态的redux存储,并且我还有一个组件(负责处理用户输入的数据)。因此,如果输入受到控制,则应在redux存储(initalState)中设置其value属性,并在每次值更改时调度一个操作,还是应该使用组件的本地状态-

 class Calc ...
   constructor(props){
       super(props);
       this.handleChange = this.handleChange.bind(this);
       this.state = {
           inputVal: ''
       }
   }

   handleChange(e){
      this.setState({
         [e.target.name]: e.target.value
      })
   }

   render(){
     return(
          <div>
              <input type="text" name="inputVal" value={this.state.inputVal} onChange={this.handleChange} />
          </div>
     )
   }

2 个答案:

答案 0 :(得分:2)

我认为,在将某些东西存储在redux存储中之前,您应该问自己一些问题:

  • 如果我的状态“ inputVal”将在其他组件之间共享?
  • 如果我的“ inputVal”的更改对其他组件有影响

如果绝对答案为“是”,则可能需要在redux状态下存储此状态“ inputVal”。

如果为否,则无需将此状态存储在redux中。取而代之的是,只需处理组件“ Cal”中的状态

答案 1 :(得分:2)

将组件连接到Redux存储时,它会收到有关对该存储所做的更改的通知。

因此,如果
-两个或更多组件将从状态更改通知中受益,并且
-当父母通常很容易意识到与自己和孩子有关的变化,然后通过改变道具让孩子知道应该做什么时,这些组件就不会处于亲子关系类型。

然后使用Redux存储。

另外,当仅一个(或几个)组件需要通知导航更改(例如,使用后退/前进浏览器按钮的用户)时,可能会出现完全不同的情况。在这种情况下,还应使用Redux,并与Router结合使用,后者会自动将具有相关有效负载的操作转移到Redux存储。