React的学习
- 用webstorm开发React要注意了,如果了用了webpack管理代码的话,一定要在webstrom设置里设置
- 点击settings -------->搜索“safe writing”------------------>去掉对应的勾如图所示:
环境的搭建
- 安装node
- npm 淘宝镜像
- 在github上搜索create-react-app 脚手架 - 安装顺序:npm install -g create-react-app - create-react-app my-app(可以在指定的目录下创建) - cd my-app/ - npm start
目录结构
- my-app/
- README.md
- node_modules/
- package.json
- .gitignore
- public/
- favicon.ico
- index.html
- src/ -App.css
- App.js
- App.test.js
- index.css
- index.js
- logo.svg
js模块化
- a.js
- var aaa=111;
- module.export=aaa;
- ----
- b.js
- var value=require('./aa');
- console.log(value)
简单的helloword的实现
- import React from 'react';
- import ReactDOM from 'react-dom';
- //定义react组件名称:一定要大写
- var Hello=React.createClass({
- /*******state属性用getInitialState()来设置默认的值*******/
- getInitialState(){
- return{
- text:0,name:'今天下雨了'
- }
- },//两种方法
- // render:function(){
- render(){
- //可以写下个变量
- var name='小样';
- var test="社会生活";
- return(
- //后面一定是要jxs语法,只能是双标签
- <div>
- <p>hello{name}</p>
- <p>hello{test}</p>
- {/*这里调用getInitialState方法的属性的值*/}
- <p>hello{this.state.text}</p>
- {/*react的点击事件必须遵循陀峰命名法*/}
- <button onClick={this.fun} >按钮</button>
- {/*一个组件只做一件事例如*/}
- <p>hello</p>
- {/*直接调用另一个组件的名称,单向数据流*/}
- {/*<Who name="你懂得!"/>*/}
- <Who name={this.state.name}/>
- {/*实现双向数据绑定效果,键盘不能输入,解决方法添加onChange事件*/}
- <input type="text" value={this.state.name} onChange={this.change}/>
- </div>
- )
- },fun:function () {
- //获取组件内部state的默认值
- var value=this.state.text;
- value++;
- //设置state的默认值,实现局部刷新
- this.setState({
- text:value
- })
- },change:function (e) {
- this.setState({
- name:e.target.value
- })
- }
- })
- //子组件设置props属性,父组件就可以拿到子组件的属性
- var Who=React.createClass({
- render(){
- return(
- <div>
- {this.props.name}
- </div>
- )
- }
- })
- //渲染组件的名称
- ReactDOM.render(<Hello/>,document.getElementById("root"))
组件生命周期图
组件生命周期
- 初始化
- 存在期
- 销毁期间
组件化
按照组件功能划分目录结构
初始化
- getDefaultProps(设置组件默认属性)不常用
- getInitialState (设置组件默认状态)常用
- componentWillMount (组件将要渲染)不常用
- render (必须用)
- componentDidMount (组件渲染完毕)常用
存在期间
销毁期
- componentWillUnmount (组件在销毁前)
/--------------------------------------------------------------------------------------------------------------------------/
- 组件的生命周期分成三个状态:
- Mounting:已插入真实 DOM
- Updating:正在被重新渲染
- Unmounting:已移出真实 DOM
- 处理函数
- 此外,React 还提供两种特殊状态的处理函数。
react循环渲染数据
- import React from 'react';
- import './child.css'
- var ChildB=React.createClass({
- //放在state属性下面
- getInitialState(){
- return {
- item:[
- '用户点击了1次','用户点击了1次','用户点击了1次'
- ]
- }
- },render(){
- //用map方法来循环,o代表每一项,i代表个数
- var value=this.state.item.map(function (o,i) {
- return(
- <li>{o}+{i}</li>
- )
- })
- return(
- <div className='child'>
- <p>子组件{this.props.name}</p>
- <ul>
- //调用循环的值
- {value}
- </ul>
- </div>
- )
- }
- })
- module.exports=ChildB;