• React props属性使用及子传父组件使用


     props属性使用

    创建一个类组件 

    1. <script type="text/babel">
    2. // 创建一个类组件
    3. class Person extends React.Component {
    4. state = {
    5. personArr:[
    6. {
    7. id:1,
    8. age:0
    9. },
    10. {
    11. id:2,
    12. name:"张飞",
    13. age:21
    14. },
    15. ]
    16. }
    17. add = ()=>{
    18. let { personArr } = this.state
    19. // personArr.unshift()
    20. let newArr = {
    21. id:3,
    22. name:"刘备",
    23. age:25
    24. }
    25. this.setState({
    26. personArr:[newArr,...personArr]
    27. },()=>{
    28. console.log(this.state.personArr)
    29. })
    30. }
    31. render() {
    32. return (
    33. <div>
    34. <ul>
    35. {
    36. this.state.personArr.map((item,index)=>{
    37. return <li key = {item.id}>
    38. <Child name={item.name} age={item.age}/>
    39. <ChildFun fun={()=>{}} {...item}/>
    40. </li>
    41. })
    42. }
    43. </ul>
    44. </div>
    45. )
    46. }
    47. }

    接下来再创建两个子组件,有两种创建方式,第一种是函数组件,第二种是类组件

    函数子组件

    通过props接收值,可以直接props.name和age,propTypes可以验证子组件对父组件传递参数的数据校验,defaultProps设置props默认值

    ChildFun是用了结构赋值{...item},所以可以直接使用props.获取值

    1. // 函数组件
    2. function ChildFun (props) {
    3. console.log(props)
    4. return (<div>
    5. <p>名字:{props.name}</p>
    6. <p>年龄:{props.age}</p>
    7. </div>)
    8. }
    9. // 子组件对父组件传递参数的类型校验
    10. ChildFun.propTypes = {
    11. name:PropTypes.string.is,
    12. age:PropTypes.number,
    13. fun:PropTypes.func
    14. }
    15. ChildFun.defaultProps = {
    16. name:"赵云",
    17. age:25,
    18. fun:()=>{}
    19. }

    类子组件

    Child用了直接赋值的形式,所以我们要使用this.props.属性获取属性值

    1. class Child extends React.Component{
    2. constructor(props) {
    3. super(props)
    4. }
    5. static propTypes = {
    6. name:PropTypes.string,
    7. age:PropTypes.number,
    8. fun:PropTypes.func
    9. }
    10. static defaultProps = {
    11. name:"赵云",
    12. age:25,
    13. fun:()=>{}
    14. }
    15. render() {
    16. console.log(this.props)
    17. return (
    18. <div>
    19. <p>名字:{this.props.name}</p>
    20. <p>年龄:{this.props.age}</p>
    21. </div>
    22. )
    23. }
    24. }

     


     子传父组件使用

    子传父步骤:

    子传父,首先在父组件中定义一个函数,在函数中给他传一个值(形参)

    在子组件中再给他定义一个函数,这个函数接收父组件中定义的函数

    在父组件中可以传参数

    父组件

    1. // 父组件
    2. class Person extends React.Component{
    3. state={
    4. PersonArr:[
    5. {
    6. id:1,
    7. name:'大哥',
    8. age:19
    9. },
    10. {
    11. id:2,
    12. name:'二弟',
    13. age:23
    14. },
    15. ]
    16. }
    17. add=(it)=>{
    18. console.log(it);
    19. }
    20. render(){
    21. let {PersonArr} =this.state
    22. return(
    23. <div>
    24. <ul>
    25. {PersonArr.map((item)=>{
    26. return <li key={item.id}>
    27. {item.name}
    28. <Child stu={this.add} {...item}/>
    29. </li>
    30. })}
    31. </ul>
    32. </div>
    33. )
    34. }
    35. }

    子组件

    1. // 子组件
    2. class Child extends React.Component {
    3. constructor(props){
    4. super(props)
    5. }
    6. user=()=>{
    7. this.props.stu(this.props)
    8. }
    9. render() {
    10. return (
    11. <div>
    12. <ul>
    13. <button onClick={this.user}>点击</button>
    14. </ul>
    15. </div>
    16. )
    17. }
    18. }

  • 相关阅读:
    股票问题5连
    前端基础之《ECMAScript 6(8)—Promise》
    【前端】Vue实现个人空间
    拉格朗日乘子法
    python数值与字符串高级用法
    ps创意合成,制作鲨鱼在橙子“海洋”里游泳的创意画面
    如何进行企业设备管理?
    常用数学点回顾
    Android Studio 实现登录注册-源代码 (连接MySql数据库)
    开源去中心化社交平台-Misskey
  • 原文地址:https://blog.csdn.net/qq_60976312/article/details/125433614