react 组件交互 父传子 子传父 非父子

//父组件->子组件 使用自定义属性,子组件通过props接收

//子---->父 使用是自定义事件 自定义事件也是在props

// 非父子 本地存储
本地存储 如果存储的数据是json或者arr,一定要先JSON.stringify 再存,取值时,取出来先JSON.parse

父传子

父组件==》

import React, { Component } from 'react'
import Child from './Child'
class Parent extends Component {
    state={
        name:'啊哈'
    }
    render() {
        return (
            <div className='box'>
    <h1>{this.state.name}</h1>
        <p name={this.state.name}></p>
      
        <h1>{this.state.msg}</h1>
<Child name={this.state.name} ></Child>
            </div>
        )
    }
}
export default Parent

子组件==》

import React, { Component } from 'react'
class Child extends Component {
    render() {
        return (
            <div className='box'>
    <h1>{this.props.name}</h1>
            </div>
        )
    }
}
export default Child

————————————————-——-——————————————
子传父

父组件===》

import React, { Component } from 'react'
import Child from './Child'
class Parent extends Component {
    state={
        name:'啊哈',
        msg:''
    }
    changeMsg(name){
this.setState({
    name
})
    }
    render() {
        return (
            <div className='box'>
    <h1>{this.state.name}</h1>
        <p name={this.state.name}></p>
      
        <h1>{this.state.msg}</h1>
<Child name={this.state.name} changeMsg={(e)=>{this.changeMsg(e)}} ></Child>
            </div>
        )
    }
}
export default Parent

子组件===》

import React, { Component } from 'react'
class Child extends Component {
    render() {
        return (
            <div className='box'>
    <h1>{this.props.name}</h1>
    <button onClick={()=>{this.props.changeMsg('111')}}>change msg</button>
            </div>
        )
    }
}
export default Child

——————————————————————————————————
非父子

存===》

 localStorage.setItem("username", JSON.stringify(this.state.user))

取===》

JSON.parse(localStorage.getItem('username'))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要修改组件传过来的值,可以在子组件中通过回调函数来实现。在组件中定义一个修改状态的方法,并将该方法作为属性传递给子组件。子组件在需要修改组件传过来的值时,调用该回调函数即可。 在给子组件传递回调函数时,需要注意将组件中的`this`绑定到回调函数中,以确保在子组件中可以访问到组件的状态和方法。 在这个例子中,组件`Filter`定义了`onTitleClick`方法来处理子组件`FilterTitle`传递过来的点击事件。在`FilterTitle`组件中,当用户点击标题时,调用`onClick`属性传递的回调函数,并将点击的类型作为参数传递给该函数。 通过这种方式,子组件就可以修改组件的状态或执行组件的逻辑操作,实现父子组件之间的数据传递交互。 可以参考以下代码: ```jsx // 组件 Filter export default class Filter extends Component { state = { titleSelectedStatus: { area: false, mode: false, price: false, more: false, }, }; onTitleClick = (type) => { // 修改组件的状态 this.setState((prevState) => ({ titleSelectedStatus: { ...prevState.titleSelectedStatus, [type]: !prevState.titleSelectedStatus[type], }, })); }; render() { const { titleSelectedStatus } = this.state; return ( <div className={styles.root}> <div className={styles.content}> <FilterTitle titleSelectedStatus={titleSelectedStatus} onClick={this.onTitleClick} /> {/* 其他内容 */} </div> </div> ); } } ``` ```jsx // 子组件 FilterTitle export default function FilterTitle({ titleSelectedStatus, onClick }) { return ( <Flex align="center" className={styles.root}> {titleList.map((item) => { const isSelected = titleSelectedStatus[item.type]; return ( <Flex.Item key={item.type} onClick={() => onClick(item.type)}> <span className={[styles.dropdown, isSelected ? styles.selected : ""].join(" ")} > <span>{item.title}</span> <i className="iconfont icon-arrow" /> </span> </Flex.Item> ); })} </Flex> ); } ``` 在上述代码中,当用户点击子组件`FilterTitle`中的标题时,会调用组件`Filter`传递的`onClick`回调函数,并将点击的类型`item.type`作为参数传递给该函数。在组件的`onTitleClick`方法中,根据传递的类型来修改组件的状态`titleSelectedStatus`,实现了组件传递值给子组件并修改的功能。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* *2* [react--子组件更改组件的值(状态)](https://blog.csdn.net/weixin_43131046/article/details/120849530)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值