【发布时间】:2020-01-14 00:16:44
【问题描述】:
我希望每个人都做得很好。
所以我在 LandingPage 组件内部的 Toolbar 组件中有一个 Hamburger 组件。我在 Hamburger 组件中有一个状态钩子。我通过工具栏使用道具将状态值传递给 LandingPage 组件,并最终传递给 LandingPage 组件。 然后,我在 LandingPage 组件的部分内有一个三元运算符,以在它为 true 时显示一个新组件(称为 NavigationMenu),而在它为 false 时不显示它。 当我单击汉堡菜单时,我可以看到布尔值正在通过传递给 LandingPage 常量。 console.logging,但三元运算符似乎没有动态更新布尔值,也没有呈现导航页面。
https://codesandbox.io/s/gifted-cache-kqfz9
以上是汉堡吧的工作代码。您可以在控制台中看到传递给 LandingPage 的值正在更新,但三元运算符(位于 LandingPage.jsx 的底部)没有加载导航页面。
登陆页面jsx:
import React from 'react'
import Toolbar from './Toolbar'
import NavigationMenu from './NavigationMenu'
function LandingPage(props) {
const burgerStatus = []
return (
<div className='landing-container' >
<Toolbar burgerStatus={burgerStatus} />
{burgerStatus[0] ? <NavigationMenu /> : null}
</div>
)
}
export default LandingPage
工具栏.jsx:
import React from 'react'
import Hamburger from './Hamburger'
function Toolbar(props) {
return (
<div className='navbar' >
<Hamburger burgerStatus={props.burgerStatus} />
</div>
)}
export default Toolbar
汉堡包.jsx:
import React, { useRef, useEffect, useState } from 'react'
import './Hamburger.scss'
function Hamburger(props) {
const [burgerClick, setBurgerClick] = useState(true)
props.burgerStatus[0] = burgerClick
function clickBurger() {
setBurgerClick(prev => {
return (!burgerClick)
})
if (burgerClick === true) {
props.burgerStatus[0] = true
console.log(props.burgerStatus[0])
} else {
props.burgerStatus[0] = false
console.log(props.burgerStatus[0])
}
}
return (
<div className="hamburger" onClick={clickBurger} >
<div className="line1"></div>
<div className="line2"></div>
<div className="line3">
<div className="blankLeft"></div>
<div className="line3-right"></div>
</div>
</div>
)
}
export default Hamburger
我已经包含了上面的代码。 感谢您的宝贵时间。
【问题讨论】:
-
可以在codesandbox上创建一个工作示例吗?
-
您好,我已经更新了代码以简化代码,因此它只包括汉堡菜单和上面提到的相应文件。
-
在此处包含代码以及指向代码框的链接。我们不希望更改代码框代码,一年后有人发现这个问题完美地代表了他们的问题,但没有任何代码。查看how to ask a good question 了解其他规则。
-
您好,我已经在文中添加了代码。对不起,我对stackoverflow还很陌生。谢谢您的意见! :)
标签: javascript reactjs