从零开始 React Native (4) React入门_状态属性_生命周期
来源:互联网 发布:深圳市网络诈骗 编辑:程序博客网 时间:2024/06/06 02:02
React入门状态属性生命周期
html
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <script src="react.js"></script> <script src="react-dom.js"></script> <script src="browser.min.js"></script> <script type="text/babel" src="04.js"></script> <title>Title</title> <div id="myDiv"></div></head><body></body></html>
//注意 这里的这三个文件去这里下载 //前两个[下载地址 ](http://reactjs.cn/react/docs/getting-started-zh-CN.html)//第三个babel的文件 直接保存文件就行//https://npmcdn.com/babel-core@5.8.38/browser.min.js//把这个js保存一下//三个文件就齐了 <script src="react.js"></script> <script src="react-dom.js"></script> <script src="browser.min.js"></script>
第一个js
/** * Created by liuml on 2017/4/25. *///React.js//React 组件化(组件的重用) 自定义一个组件//自定义组件class HelloReact extends React.Component { //组件的内容 render() { return <div> Hello React! </div>; }}//自定义组件class HelloReact extends React.Component { //组件的内容 render() { return <div> Hello<i> React!</i> </div>; }}//使用自定义的组件//绘制到页面中ReactDOM.render(<HelloReact></HelloReact>, document.body);//下一个例子 包含 组件的重用class ChildText extends React.Component { //组件的内容 render() { return <div> Hello<b> React!</b> </div>; }}class WrapperText extends React.Component { //组件的内容 虚拟dom(document object model) //React自定义组件大写开头 html 标签小写开头 render() { return <p> <ChildText></ChildText> <span>wrapperText</span> </p>; }}// 虚拟dom 跨平台ReactDOM.render(<WrapperText></WrapperText>, document.body);
第二个js 案例
/** * Created by liuml on 2017/4/25. *///案例: 点击切换 喜欢不喜欢//标签属性命名 , 小驼峰命名规则/*class Text extends React.Component { handlerClick() { alert("ok"); } render() { var like = "喜欢"; //通过状态改变text onclick 小驼峰命名 return <p onClick={this.handlerClick}>你{like}吗?</p> } } ReactDOM.render(<Text/>,document.getElementById("myDiv"));*/var Text = React.createClass({ //设置状态的初始值 getInitialState: function () { return {isLike: false}; },//逗号 //点击事件回调 handlerClick: function () { //改变状态 this.setState({isLike: !this.state.isLike}); }, render: function () { //获取状态 /* var like ="喜欢"; if(this.isLike){ like ="不喜欢"; }else{ like ="喜欢"; }*/ var text = this.state.isLike ? "喜欢" : "不喜欢"; //通过状态改变text onclick 小驼峰命名 return <p onClick={this.handlerClick}>你{text}吗?</p> }});ReactDOM.render(<Text/>, document.getElementById("myDiv"));//加载流程://1.getInitialState(初始化,设置组件的state的值,给了一个对象)//2.render(不喜欢)//点击之后的流程//1.handleClick(点击回调)//2.setState(改变状态)//3.render(喜欢)
第三个js
//props 例子 通过属性传参var Text = React.createClass({ render: function () { return <p> I love {this.props.name}</p> }});ReactDOM.render(<Text name="test"/>, document.getElementById("myDiv"));//props 更新子组件 而子组件只能通过 props 来传递数据。 案例 01 联动//子组件class TextComponent extends React.Component { render() { return <div>hello{this.props.text}!</div> }}//父组件var WrapperCompoent = React.createClass({ getInitialState: function () { return {}; }, //内容改变后回调 handlerChange: function () { alert("变了"); } , render: function () { return <div> <TextComponent/> <input type="text" onChange={this.handlerChange}/> </div>; }})ReactDOM.render(<WrapperCompoent/>, document.getElementById("myDiv"));//子组件class TextComponent extends React.Component { render() { return <div>hello {this.props.text}!</div> }}//props 子组件只能通过 props 来传递数据。 案例 02 event 联动//父组件var WrapperCompoent = React.createClass({ getInitialState: function () { return {}; }, //内容改变后回调 handlerChange: function (e) { //e 是Event事件对象 targent 是指事件的目标对象 alert(e.target.value); } , render: function () { return <div> <TextComponent/> <input type="text" onChange={this.handlerChange}/> </div>; }})ReactDOM.render(<WrapperCompoent/>, document.getElementById("myDiv"));//props 而子组件只能通过 props 来传递数据。 案例 03 event//var TextComponent = React.createClass({ render: function () { return <div>Hello {this.props.text}!</div>; }});var WrapperCompoent = React.createClass({ //state 初始化 getInitialState: function () { return {text: ''}; }, //内容改变后回调 handlerChange: function (e) { //e 是Event事件对象 targent 是指事件的目标对象 // alert(e.target.value); //改变状态 this.setState({text: e.target.value}); }, render: function () { return <div> <TextComponent text={this.state.text}/> <input type="text" onChange={this.handlerChange}/> </div>; }})ReactDOM.render(<WrapperCompoent/>, document.getElementById("myDiv"));//传参流程//1.handleChange(父组件回调)//2.setState(修改父组件的状态)//3.render(父组件重新渲染,子组件也会渲染)//3.把父组件的状态值,作为子组件的属性值传入//4.render(子组件内容改变)
第四个js
//React 组件的生命周期var MyComponent = React.createClass({ //作用于组件类,只调用一次,返回对象用于设置默认的props getDefaultProps : function(){ console.log("getDefaultProps"); return {name:'null'}; }, //作用于组件的实例,在实例创建时调用一次,用于初始化每个实例的state getInitialState : function(){ console.log("getInitialState"); return {count:0}; }, //在完成首次渲染之前调用 componentWillMount : function(){ console.log("componentWillMount"); }, //必选的方法,创建虚拟DOM // 只能通过this.props和this.state访问数据 // 可以返回null、false或任何React组件 // 只能出现一个顶级组件(不能返回数组) // 不能改变组件的状态 // 不能修改DOM的输出 render :() => {console.log("render"); return <div>MyComponent</div>;}, //真实的DOM被渲染出来后调用,在该方法中可通过this.getDOMNode()访问到真实的DOM元素 componentDidMount : function(){ console.log("componentDidMount"); }, //组件接收到新的props时调用,并将其作为参数nextProps使用 componentWillReceiveProps : function(nextProps){ console.log("componentWillReceiveProps"); }, //组件是否应当渲染新的props或state,返回false表示跳过后续的生命周期方法,通常不需要使用以避免出现bug。 shouldComponentUpdate : function(){ console.log("shouldComponentUpdate"); return true; }, //接收到新的props或者state后,进行渲染之前调用 componentWillUpdate : function () { console.log("componentWillUpdate"); }, //完成渲染新的props或者state后调用,此时可以访问到新的DOM元素 componentDidUpdate : function () { console.log("componentWillUpdate"); }, //组件被移除之前被调用,可以用于做一些清理工作 componentWillUnmount : function () { console.log("componentWillUnmount"); }});ReactDOM.render(<MyComponent/>, document.getElementById("myDiv"));
0 0
- 从零开始 React Native (4) React入门_状态属性_生命周期
- 从零开始 React Native (5) React 数据传递_表单_函数复用_动画
- 从零开始 React Native(8) flex布局_常用控件案例
- React Native 属性.样式.状态
- 《react-native》从零开始(一)生命周期
- 从零开始 React Native(6) 计时器案例(模块化_组件封装)有图有demo
- 从零开始学习React Native
- React Native从零开始(三)Props(属性)和State(状态)
- React Native(二):属性、状态
- 从零开始学React---React入门
- React Native 组件生命周期
- React Native生命周期整理
- React Native生命周期
- React-Native 生命周期
- react-native--生命周期
- react native 组件生命周期
- React Native 生命周期
- React Native 之生命周期
- SurfaceView小例子
- 第二行代码学习笔记——第五章:全局大喇叭——详解广播机制
- 模块化开发
- 设备树学习之(三)Clock
- HDFS文件写入与读取
- 从零开始 React Native (4) React入门_状态属性_生命周期
- NYOJ257郁闷的C小加(一)_中缀转后缀
- Hive,Hbase,HDFS,MapReduce等之间的关系
- Alamofire报错:dyld: Library not loaded
- TCP和UDP的区别(转)
- Java阶段性测试--知识点:数组,面向对象,集合、线程,IO流
- Perfect Squares
- 【ios】int 和 NSInteger区别
- maven打包时报致命错误: 在类路径或引导类路径中找不到程序包 java.lang