antd InputNumber添加redux之后,点击一次up按钮,数字+1+1而不是+1

这里监听onchange事件,每次更新就dispatch 新的value,然后更新store,然后更新view,代码如下:

结果就是每次点击以下,就+1 然后更新视图 然后InputNumber触发了onChange事件,然后又走了一遍,导致+1+1而不是+1

 componentWillMount() {
    const me = this;
    me.unsubscribe = store.subscribe(() => {
      const nextState = store.getState().couponInfo;
      let flag = false;
      for (var key in this.state) {
        if (this.state[key] !== nextState[key]) {
          flag = true;
          break;
        }
      }
      flag && me.setState(nextState);
    });
  }
<FormItem
              label="数量"
              labelCol={{span: 5}}
              wrapperCol={{span: 15}}
              validateStatus={this.state.quantityState}
            >
              <InputNumber
                step={1}
                min={1}
                max={100000}
                value={this.state.quantity}
                onChange={(val) => {
                  console.log(val)
                  store.dispatch(fieldChange(parseInt(val), 'quantity', (value) => {
                    return value && typeof value === 'number' && value > 0 && value <= 100000;
                  }));
                }}
              />
            </FormItem>

3.图片描述

阅读 2.9k
1 个回答

我可以帮你排除一下‘又走了一遍’那个说法的可能,因为:
InputNumber组件中的onChange执行过后,value={this.state.quantity}这里值确实会跟着改变,但是记住,仅仅value发生改变,是不会造成onChange再执行一遍的,具体问题因为出在你代码的其他地方,不过你提供的代码太零散(不全),只能帮你到这了?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题