React Hooks 兄弟组件之间传参 以及How to fix...报错

父组件 -- <App />

子组件1 -- <Header />

子组件2 -- <Body />

需求:在子组件1中更新user的值,子组件2渲染相应的数值

父子组件之间传参:通过props传递

兄弟组件:子组件1通过参数方法穿参给父组件,父组件再通过props传递给子组件2

// App.js
import React from "react"
import Header from "./Header"
import Body from "./Body"

export default function App() {
    const [user, setUser] = React.useState("")
    
    const handleUser = (user) => {
        setUser(user)
    }

    return (
        <main>
            <Header handleUpdate={handleUser}/>
            <Body user={user}/>
        </main>
    )
}
// Header.js
import React from "react"

export default function Header(props) {
    
    /**
     * Challenge:
     * Raise state up a level and pass it down to both the
     * Header and Body components through props.
     */
    const user = "Name1"
    // 将value传给副组件
    React.useEffect(() => {
        props.handleUpdate(user)
    }, [user])
    
    return (
        <header>        
            <p>Current user: {user}</p>
        </header>
    )
}
// Body.js
import React from "react"

export default function Body(props) {
    return (
        <section>
            <h1>Welcome back, {props.user}!</h1>
        </section>
    )
}

useEffect的作用: 只有当<Header />组件中user值发生变化才会触发props.handleUpdate. 否则console会有 “How to fix the "cannot update a component while rendering a different component" error in React” 报错

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值