如何在仍然能够编辑文本区域的同时动态更新文本区域的值 - React

How can you update a textarea's value dynamically while still being able to edit it - React

我有一个 textarea 和一个 onChange 处理程序:

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

但我还希望能够根据来自 MongoDB 的数据动态设置 value 属性。这是一个日记应用程序,所以它的想法是通过设置 value={this.displayEntry()} 来查找条目。问题是,我无法输入 textarea 因为每次我输入一个键时 onChange 都会触发并且 value 被预设为 MongoDB 或空字符串.

从MongoDB添加代码的函数(journal来自Redux)

displayEntry() {
    const { todaysDate } = this.state;
    const { journal } = this.props;
    if (journal) {
        for (let entry of journal.data.entries) {
            if (entry.date === todaysDate) {
                return entry.content;
            }
        }
        return "";
    }
    return "";
}

我希望清楚我想要实现的目标。有办法解决这个问题吗?

我认为你必须只从 redux 数据初始化状态一次。然后就可以继续编辑了。

例如(假设您的文本区域的名称是 journal):

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

getEntry() {
    const { todaysDate } = this.state;
    const { journal } = this.props;
    if (journal) {
        for (let entry of journal.data.entries) {
            if (entry.date === todaysDate) {
                return entry.content;
            }
        }
        return "";
    }
    return "";
}

componentDidMount() {
      this.setState({
        journal: getEntry()
    });
}

// in render
<textarea value={this.state.journal} onChange={this.onChange} />