React - 单击div文本,从另一个div更改文本

时间:2018-04-26 13:13:50

标签: javascript reactjs

我是React JS的新手,所以我很抱歉提前回答了这个问题。

我正在这里开发一个组件( https://codesandbox.io/s/8pkl8w6xy0 ),其中我有一个<div>文本。在此<div>之外,有另一个文字

我正在寻找一种方法来替换&#34;替换我!&#34;和#34;我想要取代那个人!&#34;,当我点击时,&#34;我想要取代那个人!&#34;。

到目前为止,非常好,但当我点击&#34;我想要替换那个人!&#34;,<div>内的文字不会改变。

&#34;替换我的组件!&#34;

class TextBox extends React.Component {
  constructor(props) {
  super(props);
  this.state = {
    content: 'Replace me!'
  };
  this.changeContent = this.changeContent.bind(this);
}

changeContent (newContent) {
  //code to change 'Replace me!' with 'I wanna replace that guy!'
  //when I click 'I wanna replace that guy!'
  this.setState({
    content: newContent
  });
}

render() {
  return (
    <div>
      <div className="content_box">{this.state.content}</div>
      <Content onClick={this.changeContent}></Content>
    </div>
  );
}
}

ReactDOM.render(
  <TextBox />, 
  document.getElementById("root")
);

&#34;我要替换那个人的组件!&#34;

export class Content extends React.Component {
  constructor(props) {
  super(props);

  this.handleClick = this.handleClick.bind(this);
}

handleClick(e) {
  const content = e.target.value;
  this.props.onClick(content);
}

render() {
  return (
    <div onClick={this.handleClick} value="heeey" className="text_color">
      I wanna replace that guy!
    </div>
  );
}
}

export default Content;

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

在此代码中:

handleClick(e) {
  const content = e.target.value;
  this.props.onClick(content);
}

render() {
  return (
    <div onClick={this.handleClick} value="heeey" className="text_color">
      I wanna replace that guy!
    </div>
  );
}

您实际上并没有将任何值传递给handleClick

您基本上希望将div的内容保持在状态,然后进行修改。

工作示例here

答案 1 :(得分:1)

请试试这个。 https://codesandbox.io/s/kok29jp04o

  handleClick(e) {
    const content = e.target.innerHTML;  //Since it is an element it should be `.innerHTML`
    this.props.onClick(content);
  }

将e.target.innerHTML传递给内容。如果我想替换那个人,那么e.target.value会工作!&#39;放在文本框内。

答案 2 :(得分:1)

而不是e.target.value,您应该使用e.target.textContent