gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 18:55:02 26 4
gpt4 key购买 nike

我是 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com