Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/testing/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 向cloneElement添加一个引用,然后设置cloneElement的焦点_Reactjs_Reference_Clone_Element - Fatal编程技术网

Reactjs 向cloneElement添加一个引用,然后设置cloneElement的焦点

Reactjs 向cloneElement添加一个引用,然后设置cloneElement的焦点,reactjs,reference,clone,element,Reactjs,Reference,Clone,Element,我以前没有使用过克隆元素,但现在我正在尝试创建一个按钮,当单击该按钮时,会打开一个适当类型的输入框,关键是,它会聚焦于输入框。我所做的似乎基本上可以工作,只是它没有聚焦(我得到一个控制台错误,this.refs.content.focus不是一个函数)。我试过阅读文档和其他问题,但没有进一步的进展。谢谢你的帮助 getInitialState() { return { isEditing: false, ..... }; }, _onEdit

我以前没有使用过克隆元素,但现在我正在尝试创建一个按钮,当单击该按钮时,会打开一个适当类型的输入框,关键是,它会聚焦于输入框。我所做的似乎基本上可以工作,只是它没有聚焦(我得到一个控制台错误,this.refs.content.focus不是一个函数)。我试过阅读文档和其他问题,但没有进一步的进展。谢谢你的帮助

  getInitialState() {
    return {
      isEditing: false,
      .....
    };
  },

  _onEdit() {
    if (this.state.isEditing) return;
    this.setState({
      isEditing: true,
      editedValue: this.props.value,
    }, () => {
      console.dir(this.refs);
      this.refs.content.focus();
    });
  },

  .....

  render() {
    .....
    // button clicked
    if (this.state.isEditing) {

      return React.cloneElement(
        this.props.children[0], {
          onBlur: this.onBlur,
          value: this.state.editedValue,
          onChange: this.onChange,
          ref: "content",
        }
      );

    } else {

      const child = this.props.children[1];

      // Editable but in read mode - display clickable button
      return pug`
        button.btn-block.btn-editable(
          onClick=this._onEdit,
          type='button',
        )= React.cloneElement(child, {}, this.state.editedValue || (child.props.children || ""))
      `;
    }
  },