javascript - 无法设置已编辑的文本

标签 javascript reactjs ecmascript-6

我想实现内联编辑,但遇到了问题。当我单击文本时,会出现一个文本字段,当我填充文本并按 Enter 键或单击某处时,未设置填充的文本。我犯了什么错误?

代码

export default class InlineEditing extends Component {
  constructor() {
    super();
    this.state = {
      edit: false,
      text: 'Click here to name your device'
    };
  }

  handleDeviceName = () => { this.setState({ edit: true })};

  addDeviceName = (e) => {
    this.setState({
      text: e.target.value
    });
  };

  render() {
    return (
      <Wrapper>
        <div
          onClick={this.handleDeviceName}
        >
          {this.state.edit ?
            <TextField
              name = "device_name"
              onClick={this.addDeviceName}
            /> :
            this.state.text
          }
        </div>
      </Wrapper>
    );
  }
}

最佳答案

一旦用户单击文本字段,就会调用函数addDeviceName,并且该字段的当前文本将被设置为状态。 您需要将 onClick 事件更改为 onChangeonBlur

关于javascript - 无法设置已编辑的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41076939/

相关文章:

javascript - node.js 和 Canvas ,gameloop 不同步

Azure 通知中心的 Javascript 客户端

javascript - 是否可以使用 JavaScript 在 PDF 中创建命名目标?

javascript - gatsby/react 中多维数组上的 map() 方法,尝试将内部循环包装在 div 中时出现错误

javascript - 从 Firebase 获取数据时,来自 Redux Toolkit 的 createAsyncThunk 会产生未定义的负载

javascript - 如何在 ES6/ES2015 中像 Object 表达式一样初始化 Map?

javascript - 这真的被认为是 JavaScript 闭包吗?

javascript - 在 SVG 路径上找到一个点

list - 如何将数组传递给 React.js 中的状态对象

javascript - 对象中的传播语法如何工作?