javascript - react JS。将元素附加到 DOM

标签 javascript reactjs dom createelement

我是 React 的新手,过去几天我一直在玩弄它。我正在尝试向 DOM 附加一个值,我找到了一种方法,但我正在寻找一种方法来处理

var para = document.createElement("li");
var t = document.createTextNode(value);
para.appendChild(t);
document.getElementById("root").appendChild(para); 

但是,我正在寻找一种不同的方式。我尝试了几种不同的方法,但我被卡住了。除了上面这个方法还有其他方法吗^^^^

import React, { Component } from 'react';
import { render } from 'react-dom';


export class Parent extends React.Component {
  constructor(props) {
    this.greet = this.greet.bind(this);
    this.state = { text: " " };
  }

  greet(value) {
    //console.log(value);

    var para = document.createElement("li");
    var t = document.createTextNode(value);
    para.appendChild(t);
    document.getElementById("root").appendChild(para); 

  }

  render() {
    return (
      <div>
        <Child onGreet={this.greet} />
      </div>
    )
  }
};


export class Child extends React.Component {

  constructor(props) {
    this.state = { value: '' };
    this.handleChange = this.handleChange.bind(this);
    this.eventClick = this.eventClick.bind(this);
  }

  handleChange(event) {
    this.setState({ value: event.target.value });
  }

  eventClick() {
    this.props.onGreet(this.state.value);
  }

  render() {
    return (
      <div>
<input type="text" value={this.state.value} onChange={this.handleChange} />
<button type="button" onClick={this.eventClick}>Submit </button>
      </div>
    )
  }
};

最佳答案

你可以尝试利用 React 的 state 属性。

import React, { Component } from 'react';
import { render } from 'react-dom';

export class Parent extends React.Component {
  constructor(props) {
    this.greet = this.greet.bind(this);
    this.state = {
      text: [],
    };
  }

  greet(value) {
    //console.log(value);

    const {text} = this.state
    return this.setState({
      text: text.concat(value),
    });

  }

  render() {
    return (
      <div>
        <Child onGreet={this.greet} />
        <ul>
        {this.state.text.map(x => (<li>{x}</li>))}
        </ul>
      </div>
    )
  }
};

有了这个,列表会随着 this.state.text 值的变化而填充。

关于javascript - react JS。将元素附加到 DOM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49809392/

相关文章:

javascript - 如何在使用标准 JavaScript 结束后立即重新启动 CSS 转换?

javascript - 将点击监听器添加到 JavaScript 选项卡栏的最佳方法是什么?

reactjs - Chrome 中的 "WebExtension::executeScript: content script injected VM149:1"加载 React 应用程序

javascript - 如何更改 FlatList 中 TextInput 组件的属性?

javascript - 指针事件 : Detect touching "through" an element

javascript - Ember.js {{render}} 助手模型设置不正确

javascript - TabNavigator 将不同的参数从每个屏幕传递到 StackNavigator header

reactjs - 在 react 选择上使用 isClearable 时事件为空

javascript - 如何记录文本在页面上的位置?

javascript - 设置 document.body.outerHTML 会创建空头。为什么?