作家
登录

编写react组件最佳实践

作者: 来源: 2017-05-18 08:56:30 阅读 我要评论

  •  
  •  
  • 在上文的例子中,我们是这么做的:

    1. this.setState({ expanded: !this.state.expanded }) 

    闭包

    setState实际是异步履行的,react因为机能原因会将state的变更整合,再一路处理,是以当setState被调用的时刻,state并不必定会急速变更。

    这意味着在调用setState的时刻你不克不及依附当前的state值——因为你不克不及确保setState真正被调用的时刻state毕竟是什么。

    解决方檀卷是给setState传入一个办法,该办法接收上一次的state作为参数。

    this.setState(prevState => ({ expanded: !prevState.expanded })

    办法

    解构props

    1. import React, { Component } from 'react' 
    2. import { observer } from 'mobx-react' 
    3. import { string, object } from 'prop-types' 
    4. import ExpandableForm from './ExpandableForm' 
    5. import './styles/ProfileContainer.css' 
    6. export default class ProfileContainer extends Component { 
    7.   state = { expanded: false } 
    8.   
    9.   static propTypes = { 
    10.     model: object.isRequired, 
    11.     title: string 
    12.   } 
    13.   
    14.   static defaultProps = { 
    15.     model: { 
    16.       id: 0 
    17.     }, 
    18.     title: 'Your Name' 
    19.   } 
    20.   handleSubmit = (e) => { 
    21.     e.preventDefault() 
    22.     this.props.model.save() 
    23.   } 
    24.    
    25.   handleNameChange = (e) => { 
    26.     this.props.model.changeName(e.target.value) 
    27.   } 
    28.    
    29.   handleExpand = (e) => { 
    30.     e.preventDefault() 
    31.     this.setState(prevState => ({ expanded: !prevState.expanded })) 
    32.   } 
    33.    
    34.   render() { 
    35.     const { 
    36.       model, 
    37.       title 
    38.     } = this.props 
    39.     return (  
    40.       <ExpandableForm  
    41.         onSubmit={this.handleSubmit}  
    42.         expanded={this.state.expanded}  
    43.         onExpand={this.handleExpand}> 
    44.         <div> 

        推荐阅读

        Java反射机制应用实践

      引言反射基本p.s: 本文须要读者对反射机制的API有必定程度的懂得,如不雅之前没有接触过的话,建议先看一下官方文档的Quick Start。在应用反射机制之前,起首我们先来看一下若何获取一个对>>>详细阅读


      本文标题:编写react组件最佳实践

      地址:http://www.17bianji.com/lsqh/35286.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)