React

React 中的响应式设计思想和事件绑定

2022-01-27  本文已影响0人  泡杯感冒灵
在react中如何定义数据?
class TodoList extends Component {
    constructor(props){
       // TodoList组件 继承了react里的 Component组件,super(props)指的是就是调用Component这个父类的构造函数一次。
        super(props)
    }
}
class TodoList extends Component {
    constructor(props){
        super(props)
      
        this.state = {
            inputValue:'hello',
            list:[]
        }
    }
}
render(){
        return (
            <Fragment>
                <div>
                    <input 
                        value={this.state.inputValue}
                    />
                    <button>提交</button>
                </div>
                <ul>
                    <li>英文</li>
                    <li>数学</li>
                </ul>
            </Fragment>
        )
    }
react事件绑定的语法。
<input  
            value={this.state.inputValue}
            onchange="xxxx"
/>
<input  
            value={this.state.inputValue}
            onChange={this.handleInputChange}
/>
    handleInputChange(e){
        console.log(this)
        console.log(e.target.value)
        this.state.inputValue = e.target.value;
    }
<input 
          value={this.state.inputValue}
          onChange={this.handleInputChange.bind(this)}
 />
    handleInputChange(e){
        this.setState({
            inputValue:e.target.value
        })
    }
列表循环
<ul>
                    {
                        this.state.list.map((item,index)=>{
                            return (
                                <li key={index} 
                                    onClick={this.handleItemDelete.bind(this,index)}
                                >
                                    {item}
                                </li>
                            )
                        })
                    }
                </ul>
    handleItemDelete(index){
        // 这里通过展开运算符,拷贝一份list数组
        const list = [...this.state.list];
        list.splice(index,1);
        this.setState({
            list:list
        })
    }
react不允许直接修改 state
// immutable
this.state.list.splice(index,1)

总结
  1. state负责存储组件里的数据。
  2. jsx语法里使用变量或者表达式,要加{}。
  3. 事件绑定的时候,需要通过bind(this)对函数的作用域进行变更。
  4. 如果想改变数据内容,不能直接改变,需要通过setState函数进行变更。
上一篇 下一篇

猜你喜欢

热点阅读