了解一个React组件
|
也可以在这里看:http://leozdgao.me/liao-jie-ge-reactzu-jian/ 最近React,这个专注View层的库格外火热,我个人已经探索了一段时间,本来一直想写一些文字,总结下React应用开发和webpack构建工具的经验。不过懒癌复发,一直没动笔。前段时间给团队安利这个库,现在要开始用它写项目了,所以自己挖的坑要填上,就开始写一些基本的东西,就先从介绍React组件的基础开始。 从一个简单的组件开始标题叫“一个简单的组件”,于是先来看下官方网站上一个叫做“A Simple Component”的例子来感受下: var HelloMessage = React.createClass({
render: function() {
return <div>Hello {this.props.name}</div>
}
})
React.render(<HelloMessage name="John" />,mountNode)
好的,通过React提供的工厂方法,我们创建了一个组件,在这里,我们认为 之后,React就可以根据 下面来具体介绍下。 JSX上面的例子里看着像是把HTML写在了Js里,实际上是通过一种更加清晰易读且易维护的语法JSX来创建 当然有JSX语法的js文件是不能直接在浏览器中运行的,我们可以用官方的 需要注意的是 创建一个组件创建组件的时候需要给 要注意的是我们需要保证 除此之外,更重要的部分是,让一个组件可以工作除了有blueprint外,还需要组件状态。对于一个React组件来说,分为不可变状态 我们可以通过 说到可变状态,那么要这么变?React并不希望我们直接修改 我们也可以提供一些默认状态: getDefaultProps () {
return {
name: 'defaultName'
};
},getInitialState: function() {
return {
listShowed: false
};
},
其中 这里需要提一下React提供以ES6的方式创建组件,有意思的是ES6的版本用的是 class HelloMessage extends React.Component {
constructor (props) {
this.super(props)
this.state = { } // 初始化状态
}
render () {
return <div>Hello {this.props.name}</div>
}
}
HelloMessage.defaultProps = { name: 'defaultName' }
组件的生命周期之前的部分一直有提到生命周期函数,下面就来介绍下:
componentDidMount () {
const textbox = React.findDOMNode(this.refs.text)
if (this.props.autoFocus) textbox.focus()
}
componentWillReceiveProps (nextProps) {
if (this.props.disabled !== nextProps.disabled) {
// disabled这个属性改变了
}
}
这个生命周期函数
shouldComponentUpdate (nextProps,nextState) {
// 比较props或者states,返回true则更新照常,返回false则取消更新,且不会调用下面的两个生命周期函数
}
考虑这种情况:父组件有子组件A和子组件B,当父组件调用 但如果是复杂对象的比较就比较麻烦了,因为我们无法通过
componentWillUpdate (nextProps,nextState) {
if (!this.props.isShowed && nextProps.isShowed) {
// 比如下拉菜单此时变的显示了,可以对此监听一些事件什么的
}
if (this.props.isShowed && !nextProps.isShowed) {
// 比如下拉菜单隐藏了,可以在这里取消事件监听
}
}
(组件更新前事情还蛮多的...)
注意:绝对不要在
好了,正文结束,这一篇介绍了React比较基础的部分,希望对大家有帮助,之后还会有一些更有针对性的部分。如文章中内容有误,还请指正。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
