/* *属性 * 1.如何传递属性 * 2.属性和状态区别和联系 * * 3.子组件都有一个props属性对象 * * 4.单线数据流(只能从父组件流向子组件,就是在父组件定义一个属性,子组件可以通过this.props.属性名 接收) * 5.子组件可以读取父组件传递的属性,但是不能直接改 * */ import React,{Component} from 'react' import ReactDOM from 'react-dom' //子组件 class LikeButton extends Component{ constructor(){ super(); } render(){ // JS引擎 V8 最多只会占用1.7G //onClick等于一个函数定义,而非一个函数执行结果 //如果changeText加上(),则会直接执行,再次执行就没有结果,还会进入死循环 // 加了(),改变状态,父组件重新渲染,子组件又会渲染,自主渲染又会修改状态,父组件又会重新渲染,这样一直死循环,直到内存消耗光了 return( <button onClick={this.props.changeText}> {this.props.text}{this.props.age} </button> ) } } /*父组件定义一个属性text*/ class Index extends Component{ constructor(){ super(); //初始化状态对象 this.state={ text:"点赞", age:10 } } changeText= ()=>{ this.setState({ text:this.state.text=='点赞'?'取消':'点赞' }) } //父组件通过属性传递函数和变量值给子组件 render(){ return( <div> <LikeButton changeText={this.changeText} text={this.state.text} age={this.state.age}></LikeButton> </div> ) } } ReactDOM.render(<Index></Index>,document.querySelector('#root'));