0

我正在使用 React 和 Redux 开发一个 Web 应用程序。我是 React 和 Redux 的新手。现在,我在使用 React 和 Redux 时遇到了问题。问题是当我使用状态值设置字段值时,我无法更改输入字段值。

在我的组件中,我有一个名为 event 的属性,它处于来自 connect 的状态,就像这样。

function mapStateToProps(state)
{
    return {
        submittingForm : state.editEvent.submittingForm,
        formErrors : state.editEvent.formErrors,
        event: state.editEvent.event,
    };
}

如您所见,提交的事件来自减速器。在我的组件中,我可以像这样检索事件。

this.props.event.name

现在,我想做的是在编辑事件时,我喜欢在输入字段中维护事件的值。

因此,我像这样在输入字段中呈现状态值。

<TextField
      name="location"
      label="Location"
      value={this.props.event? this.props.event.location: ""} />

它正在维护输入字段中的值。但问题是我现在无法更改输入字段。我可以专注于文本输入字段,但是当我使用键盘输入任何内容时,值不会改变,只是继续显示状态值。我该如何解决这个问题?

4

1 回答 1

0

如果它很慢,我会使用类似debounce函数的东西(见这里:https ://lodash.com/docs/#debounce )。本质上,当您有一组经常发生的事件并且您想要调用某个函数时,它很有用,只有在自上一个事件后经过一定的超时时间时。

因此,您可以在用户完成输入后 300-500 毫秒后才发出新事件,而不是每次更改时发出新事件。这看起来像是将所有更改批处理到单个更新中。如果这对您的问题来说是可以接受的,那么您可以这样做:

var debouncedOnChange = _.debounce(current_onChange_method, 300 or another time in ms);

然后<TextField>设置onChangedebouncedOnChange.

于 2018-07-14T23:22:39.220 回答