React技术栈——ReactJS

前端之家收集整理的这篇文章主要介绍了React技术栈——ReactJS前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

初始化

引入三个script:

  1. <script src="build/react.js"></script>
  2. <script src="build/react-dom.js"></script>
  3. <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.34/browser.min.js"></script>

第一个是React的核心代码,第二react-dom.js是React里面操作DOM的部分,第三个browser.js将JSX转为Javascript语法。

ReactDOM.render

将模板语言转为HTML语言,并插入DOM

  1. ReactDOM.render(
  2. <div>Test</div>,document.body
  3. );

组件

组件类第一个字母必须大写

  1. var Hello = React.createClass({
  2. render: function(){
  3. return <h1>Hello,{this.props.name}</h1>
  4. }
  5. })
  6.  
  7. ReactDOM.render(
  8. <Hello name="cxs" />,document.body
  9. )

this.props.children

this.props对象属性与组件属性一一对应。this.props.children是例外,它表示组件的所有节点

  1. var NotesList = React.createClass({
  2. render: function(){
  3. return (
  4. <ol>
  5. {
  6. React.children.map(this.props.children,function(child){
  7. return <li>{child}</li>
  8. })
  9. }
  10. </ol>
  11. );
  12. }
  13. });
  14.  
  15. ReactDOM.render(
  16. <NotesList>
  17. <span>Hello</span>
  18. <span>world</span>
  19. </NotesList>,document.body
  20. );

PropTypes

组件的属性可以接受任意值。需要一种验证机制,验证别人使用组件时提供的参数是否合法

  1. var Title = React.createClass({
  2. propTypes: {
  3. title: React.propTypes.string.isrequired,},render: function(){
  4. return <h1>{this.props.title}</h1>
  5. }
  6. });

获取真实DOM节点

组件的是virtual DOM。需要获取真实DOM节点时,要用到ref属性

  1. var Component = React.createClass({
  2. handleClick: function(){
  3. this.refs.myTextInput.focus();
  4. },render: function(){
  5. return (
  6. <div>
  7. <input type="text" ref="myTextInput" />
  8. <input type="button" value="Focus the text input" onClick={this.handleClick}>
  9. </div>
  10. )
  11. }
  12. })
  13.  
  14. ReactDOM.render(
  15. <Component />,document.body
  16. )

this.state

React的状态机,状态的变化可以出发重新渲染UI

  1. var LikeButton = React.createClass({
  2. getInitialState: function(){
  3. return {liked: false};
  4. },handleClick: funtion(event){
  5. this.setState({liked: !this.state.liked});
  6. },render: function(){
  7. var text = this.state.liked ? 'like' : 'dont like';
  8. return(
  9. <p onclick={this.handleClick}>
  10. </p>
  11. )
  12. }
  13. })
  14.  
  15. ReactDOM.render(
  16. <LikeButton />,document.body
  17. )

组件的生命周期

组件的生命周期有三个状态:

  1. Mounting: 已插入真实DOM
  2. Updating: 正在被重新渲染
  3. Unmounting: 已移出真实DOM

React为每个状态提供两种处理函数,will在进入状态前调用,did函数在进入状态后调用,共五中处理函数:

  1. componentWillMount()
  2. componentDidMount()
  3.  
  4. componentWillUpdate(object nextProps,object nextState)
  5. componentDidUpdate(object prevProps,object preState)
  6.  
  7. componentWillUnount()

还有两种特殊状态的处理函数

  1. componentWillReceiveProps(object nextProps): 已加载组件收到新的参数时调用
  2. shouldComponentUpdate(object nextProps,object nextState): 组件判断是否重新渲染时调用

Demo:

  1. var Hello = React.createClass({
  2. getInitialState: function(){
  3. return {
  4. opacity: 1.0
  5. }
  6. },componentDidMount: function(){
  7. this.timer = setInterval(function(){
  8. var opacity = this.state.opacity;
  9. opacity += 0.05;
  10. if(opacity < 0.1){
  11. opacity = 1.0;
  12. }
  13. this.setState({
  14. opacity: opacity
  15. })
  16. }.bind(this),100)
  17. },render: function(){
  18. return (
  19. <div style={{opacity: this.state.opacity}}>
  20. Hello {this.props.name}
  21. </div>
  22. )
  23. }
  24. });
  25.  
  26. ReactDOM.render(
  27. <Hello name="world" />,document.body
  28. )

猜你在找的React相关文章