React里props的用法

简介: React里props的用法

props运用场景



组件传参

父传子


场景一:


传递变量

父组件中直接绑定变量

<Son data={obj}/>

<Son data={obj}{...obj2}/>

子组件this.props.data接收

data 是自定义的属性名


为什么传的第二个对象不解构会报错?


因为第一个对象会有data作为属性名,而第二个对象不解构就没有属性名


场景二:


传递内容

组件极少部分不同时使用

父组件中双标签包裹内容

我是父组件传来的内容

子组件用this.props.children接收

一般用闭合标签,也就是为了这样传递参数

场景三:

传递组件

大多用于子组件大部分相同,少数不同时使用

父组件绑定组件名称<Parent left={ <Son1> }> <Parent left={ <Son2> }>

子组件this.props.left接收

left 是自定义的属性名


示例



父传子


父组件


import React, { Component } from 'react';
import One from './one.jsx'
import Two from './two.jsx'
import Three from './three.jsx'
import Four from './four.jsx'
import Five from './five.jsx'
class Props extends Component {
  render() {
    const obj = {
      age:'32',
      name: "张三"
    }
    const obj2 = {
      job: '前端工程师'
    }
    return (
      <div className="props_main">
        <h3>props的使用场景有哪些</h3>
        <One title="全国名师推荐" />
        {/* 复合数据类型需要用扩展运算符,否则会报错。因为不用扩展运算符,没有属性去接收 */}
        <Two data={obj} {...obj2} />
        <Three>
          <a href="#">
            更多&gt;&gt;
          </a>
        </Three>
        <Three />
        <Four left={<Five />} />
      </div>
    )
  }
}
export default Props


子组件


One子组件


import React, { Component } from 'react';
class One extends Component {
  render() {
  //父组件传一个属性title,子组件用this.props.title接收
    return (
      <div className="props_main">
        <h3>one</h3>
        {/* 第一种传参方法 */}
        {this.props.title}//全国名师推荐
      </div>
    )
  }
}
export default One


Two组件


//这是复合型组件
import React, { Component } from 'react';
class Two extends Component {
  render() {
    const { name } = this.props.data
    const { data,  job } = this.props
    return (
      <div className="props_main">
        <h3>two</h3>
        {this.props.data.name}//元芳
        {name}//元芳
        {data.age}//32
        {job}//前端工程师
      </div>
    )
  }
}
export default Two


Three组件


import React, { Component } from 'react';
class Three extends Component {
  render() {
    return (
      <div className="props_main">
        <h3>three</h3>
        {/* 这种传参方法 ,可以被复用 */}
        {this.props.children}//更多>>
      </div>
    )
  }
}
export default Three


Four组件


import React, { Component } from 'react';
class Four extends Component {
  render() {
    return (
      <div className="props_main">
        <h3>Four</h3>
        {/* 第三种传参方法  */}
        {this.props.left}//我是第五个组件
      </div>
    )
  }
}
export default Four


Five组件


import React, { Component } from 'react';
class Five extends Component {
  render() {
    return (
      <div className="props_five">
        <h3>我是第五个组件</h3>
      </div>
    )
  }
}
export default Five


相关文章
|
8天前
|
前端开发
React中Props的详细使用和props的校验
React中Props的详细使用和props的校验
|
8天前
|
前端开发 数据库
第七章 react组件实例中三大属性之props
第七章 react组件实例中三大属性之props
|
8天前
|
前端开发 JavaScript 安全
【亮剑】探讨了在React TypeScript应用中如何通过道具(props)传递CSS样式,以实现模块化、主题化和动态样式
【4月更文挑战第30天】本文探讨了在React TypeScript应用中如何通过道具(props)传递CSS样式,以实现模块化、主题化和动态样式。文章分为三部分:首先解释了样式传递的必要性,包括模块化、主题化和动态样式以及TypeScript集成。接着介绍了内联样式的基本用法和最佳实践,展示了一个使用内联样式自定义按钮颜色的例子。最后,讨论了使用CSS模块和TypeScript接口处理复杂样式的方案,强调了它们在组织和重用样式方面的优势。结合TypeScript,确保了样式的正确性和可维护性,为开发者提供了灵活的样式管理策略。
|
8天前
|
前端开发 JavaScript
【掰开揉碎】react中的super(props)
【掰开揉碎】react中的super(props)
|
8天前
|
前端开发 JavaScript
详解React:Props构建可复用UI的基石
详解React:Props构建可复用UI的基石
17 0
|
8天前
|
前端开发 UED
React 防抖与节流用法
React 防抖与节流用法
40 0
|
8天前
react+typescript给state和props定义指定类型
react+typescript给state和props定义指定类型
23 1
|
8天前
|
前端开发 JavaScript
react中refs的作用是什么?有几种用法?
react中refs的作用是什么?有几种用法?
|
8天前
|
前端开发
react父组件props变化的时候子组件怎么监听?
react父组件props变化的时候子组件怎么监听?
65 0
|
8天前
|
前端开发
React中render Props模式
React中render Props模式
React中render Props模式

热门文章

最新文章