这两者有区别吗
来源:2-7 自由编程
qq_慕九州2374973
2020-06-06 21:23:12
Ref.js:
import React, { Component, Fragment } from "react";
import TodoItem from "./TodoItem";
class Ref extends Component {
constructor(props) {
super(props);
this.handleBtnClick = this.handleBtnClick.bind(this);
this.handleInputChange = this.handleInputChange.bind(this);
this.handleItemClick = this.handleItemClick.bind(this);
this.state = {
inputValue: 'hello React',
list: []
}
}
handleInputChange(e) {
this.setState({
inputValue: e.target.value
});
}
handleBtnClick() {
const list = [...this.state.list, this.state.inputValue];
this.setState({
list,
inputValue: '' //清空输入框
})
console.log(this.inputElem.value);
console.log(this.state.inputValue);
}
handleItemClick(index) {
const list = [...this.state.list];
list.splice(index,1);
this.setState({ list });
}
handleGetItem() {
return this.state.list.map((value, index) => {
return(
<TodoItem
content={value}
key={index}
index={index}
deleteFunction={this.handleItemClick}
/>
);
});
}
render() {
return(
<Fragment>
<input
type="text"
value={this.state.inputValue}
onChange={this.handleInputChange}
ref={(input) => {this.inputElem = input }}
/>
<button onClick={this.handleBtnClick}>提交</button>
<ul>
{this.handleGetItem()}
</ul>
</Fragment>
)
}
}
export default Ref;
TodoItem.js
import React, {Component, Fragment} from "react";
class TodoItem extends Component {
constructor(props) {
super(props);
this.handleItemClick = this.handleItemClick.bind(this);
}
handleItemClick() {
// this.props.deleteFunction(this.props.index);
const {deleteFunction, index} = this.props;
deleteFunction(index);
}
render() {
const { content } = this.props;
return (<Fragment><li onClick={this.handleItemClick}>{content}</li></Fragment>);
}
}
export default TodoItem;
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import Ref from './Ref'
ReactDOM.render( <Ref/>, document.getElementById('root'));
this.inputElem.value 和 this.state.inputValue 这两个有什么区别吗,输出的值都是一样的1回答
同学你好,代码实现效果很棒!
针对提问问题回复:
这两个值肯定是一样,因为代码中将从输入框获取到的值,也就是this.inputElem.value赋值给 this.state.inputValue了

但是我们操作的时候还是用this.state.inputValue,这样可以设置输入框初始值,以及将内容提交后设置输入框内容为空。
自己再测试理解下,祝学习愉快!
相似问题