【发布时间】:2021-01-22 23:10:26
【问题描述】:
我有一个简单的组件,它需要将链接值从子组件传回给父组件中的函数,但它只回调完整的函数而不是它的值。当我包含“navigate(/...)` 时,它可以工作,但会自动转到页面。我知道我错过了一些超级简单的东西,但它需要很长时间才能弄清楚。请参阅下面的代码。
//Parent Component
function ZodiacMDates({getDate}) {
const zodiacSigns = [
{
id: 1,
asign: 'Aries',
link: 'aries',
title: 'The Aries Mars Man',
AriesSdate1: '158590800000', // '01/10/1975'
AriesEdate1: '254494800000', // '01/24/1978'
AriesSdate2: '350053200000', // '02/03/1981'
AriesEdate2: '447253200000' // '03/04/1984'
},
{
id: 2,
asign: 'Taurus',
link: 'taurus',
title: 'The Taurus Mars Man',
TaurusSdate1: '-1244372400000', // '07/27/1930'
TaurusEdate1: '-1186225200000', // '05/30/1932'
TaurusSdate2: '496501200000', // '09/25/1985'
TaurusEdate2: '521298000000' // '07/09/1986'
}
]
const clickMan = (chosenZodiac) => {
return (
chosenZodiac
)
// return (
// navigate(`/${chosenZodiac}`)
// )
}
const zodiacSignsMap = zodiacSigns.map(sign => <ZodiacMCheck
key={sign.id}
sign={sign}
getDate = {getDate}
findZodiac = {clickMan} />)
return <div>
{zodiacSignsMap}
// This button Does not work
<button onClick={()=>{navigate(`/${clickMan}`)}}>Find Me!</button>
</div>
//Child Component
function ZodiacMCheck({getDate, sign, findZodiac}) {
const zodiacLink = () => {
return (
findZodiac(sign.link)
)
}
// Check For Aries
if ((sign.AriesSdate1 <= getDate && sign.AriesEdate1 >= getDate) ||
(sign.AriesSdate2 <= getDate && sign.AriesEdate2 >= getDate ) ||
//Check For Taurus
(sign.TaurusSdate1 >= getDate && sign.TaurusEdate1 <= getDate) // Negative
|| (sign.TaurusSdate2 <= getDate && sign.TaurusEdate2 >= getDate )) {
let zodiacSign = zodiacLink();
return (
<div>
{zodiacsign}
</div>
)
}
else {
return (null)
}
}
export default ZodiacMCheck
【问题讨论】:
-
React 是自上而下的。 I asked a similar question a few months ago
标签: javascript reactjs gatsby