快速开始
1 | // 1.引入react react-dom |
注意 React组件中的标签必需写在闭合标签(单双标签都可以)
注意 不能在标签使用有js关键字的属性,如class,如果要用写成className
操作样式
- 1.使用className方式 className指的是class
- 2.使用内联的方式
- 在当前标签上加上style属性,值为一个js对象:
- 这个tmpStyle里就是以key,value表示样式,把有-的属性名改成驼峰写法
this.state
注册事件
- 在组件上使用 on事件名 来注册事件,事件名改成驼峰写法
- 如:
- onChange
this.state
- 我们只能够通过this.state改变组件中的内容,而不能通过编辑组件内容改变this.state
如: 如果给input value设置this.state属性值 就不可编辑。
只能通过改变this.state的属性值来改变input的value
获取dom对象 this.refs与ref属性
- 在组件中的属性上使用ref属性,给一个如:
最终react会帮助我们自动获取这组件对应的dom对象(原生),存储到this.refs上,且key
ref指向的值. this.refs.tmp
组件之间的嵌套
- 直接在一个组件内部,以标签形式使用别一个组件。
- 在单独的模块中创建一个组件,并把这个组件暴露出去。
1 | // 在userinfo.jsx里只创建组件,导出组件 |
- 再另一个文件中引入创建的组件
1 | // 1.引入依赖的包 |
组件之间的值传递:
组件内部可以接收到组件所在标签的属性值:
通过this.props接收,它包含的该组件所在标签的所有的属性值1
2
3
4
5
6
7
var UserInfo = React.createClass({
render:function(){
this.props 这里就是所有属性值。
}
})
<UserInfo key={item.id} name={item.name} age={item.age}
注意
- 直接改变this.props.属性值 不会使得组件重新渲染
- this.state
- 必须要调用this.setState({}),才能重新渲染组件,
- 父组件重新渲染,子组件也会跟着渲染
使用es6写法
使用再安装:
npm install babel-preset-es20151
2
3
4
5
6
7
8
9
10
11
12
13
14
15var Hello = React.createClass({
getInitialState() {
return { liked: false };
},
render: function() {
console.log(this.state.liked);
return(
<div>
<h1 style={style}>Hello world</h1>
<br/>
<image/>
</div>
)
}
});1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16export default class Hello extends Component {
constructor(props) {
super(props);
this.state = { count: 'es6'};
}
render() {
return (
<div>
<h1 style={style}>Hello world{this.state.count}</h1>
<br/>
<image/>
</div>
)
}
}
相关链接
// 可以在组件中的属性中直接使用的事件
React支持的事件
React支持的标签和属性
#- 转换语法
babel-loader,
babel-core,
babel-preset-react,
babel-preset-es2015,
#–网页
react
react-dom
