最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • React props属性【七日打卡】

    正文概述 掘金(NoBugNo)   2021-01-16   376

    如果需要在组件之间进行传值,那么props属性就起到了这个作用,在React中props和state是两个非常重要的属性。

    state 和 props 主要的区别在于 props 是不可变的,而 state 可以根据与用户交互来改变。这就是为什么有些容器组件需要定义 state 来更新和修改数据。 而子组件只能通过 props 来传递数据。

    Note:属性是用于设置默认值,不改变的值使用props,而改变的值我们要使用state.

    1. 每个组件对象都会有props(properties的简写)属性;
    2. 组件标签的所有属性都保存在props中;
    3. 内部读取某个属性值:this.props.propertyName;
    4. 作用:通过标签属性从组件外向组件内传递数据(只读 read only);
    5. 对props中的属性值进行类型限制和必要性限制;
    Person.propTypes = {
          name: React.PropTypes.string.isRequired,
          age: React.PropTypes.number.isRequired
     }
    
    1. 扩展属性:将对象的所有属性通过props传递
    <Person {...person}/>
    
    1. 默认属性值
    Person.defaultProps = {
          name: 'Mary'
    };
    

    Demo

    /*
       1. 拆分组件: 拆分界面, 抽取组件
         * 单个标题组件: Welcome
         * 应用组件: App
       2. 分析确定传递数据和数据类型
         * Welcome: props.name  string
         * App: props.names    array
       */
    
      //定义内部标题组件
      class Welcome extends React.Component {
        render() {
          return <h2>Welcome {this.props.name}!</h2>;
        }
      }
      Welcome.propTypes = {
        name: React.PropTypes.string.isRequired
      };
      //定义外部应用组件
      class App extends React.Component {
        render() {
          return (
            <div>
              {
                this.props.names.map(
                  (name, index) => <Welcome name={name} key={index}/>
                )
              }
            </div>
          );
        }
      }
      App.propTypes = {
        names: React.PropTypes.array.isRequired
      };
    
      var names = ['Tom', 'Jack', "Bob"];
      ReactDOM.render(<App names={names}/>, document.getElementById('example'));
    

    拓展阅读 create-react-app关闭eslint提醒

    前言

    在项目开发过程中,有时候苦恼于eslint的校验规则,例如变量定义为使用、空格等的校验。

    主要有两种方式可实现关闭eslint提醒。

    第一种方式

    在react-scripts依赖包下的config目录找到webpack.config.js配置文件,在webpack.config.js中注释掉以下代码:

    {
              test: /\.(js|mjs|jsx|ts|tsx)$/,
              enforce: 'pre',
              use: [
                {
                  options: {
                    cache: true,
                    formatter: require.resolve('react-dev-utils/eslintFormatter'),
                    eslintPath: require.resolve('eslint'),
                    resolvePluginsRelativeTo: __dirname,
                    // @remove-on-eject-begin
                    ignore: isExtendingEslintConfig,
                    baseConfig: isExtendingEslintConfig
                      ? undefined
                      : {
                          extends: [require.resolve('eslint-config-react-app')],
                        },
                    useEslintrc: isExtendingEslintConfig,
                    // @remove-on-eject-end
                  },
                  loader: require.resolve('eslint-loader'),
                },
              ],
              include: paths.appSrc,
            },
    

    第二种方式

    package.json 中修改为以下:

    eslintConfig": {
        "extends": "react-app",
        "rules": {
          "no-undef": "off",
          "no-restricted-globals": "off",
          "no-unused-vars": "off"
        }
      }
    

    然后重启npm start。


    起源地下载网 » React props属性【七日打卡】

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元