如何在 React 中将 onClick 传递给父级
How to pass an onClick to parent in React
我有一个名为 beercard 的 React 组件,它为我填充了一个项目并添加了一个赞按钮,这是 Beercard 文件:
function Beercard(props) {
const [active, setActive] = useState(false);
const changeLike = () => {
setActive(!active)
}
return (
<BeerCard>
<Content>
<Lockup text={props.description} tag="h3" title={props.title}/>
</Content>
<ImagContainer>
<Like liked={active} />
<Image url={props.image}/>
</ImagContainer>
</BeerCard>
)
}
然后我有 Like 组件,我将使用它来处理 onClick:
const Icon = styled.svg`
width: 32px;
height: 32px;
stroke: white;
stroke-width: 2px;
fill: ${props => props.liked ? 'white' : 'transparent'};
`
const like = (props) => {
return (
<LikeButton onClick={props.action}>
<Icon liked={props.liked}>
<path
id="heart-icon"
d="M16,28.261c0,0-14-7.926-14-17.046c0-9.356,13.159-10.399,14-0.454c1.011-9.938,14-8.903,14,0.454
C30,20.335,16,28.261,16,28.261z"
/>
</Icon>
</LikeButton>
)
}
一切正常,即 css 用于填充和未填充,然后如果我在 beercard 文件中将状态设置为 true,它会将心脏设置为 active/fills。但是 onClick 函数没有做任何事情,我不确定如何在两个文件之间进行通信以添加此事件。这是一个简单的 on/off 切换 true 和 false 但我不知道如何处理事件,有人可以看到我需要做什么吗?
如果我没理解错的话,您只需要将所需的函数作为 属性 传递给 Like 组件即可。你实际上已经完成了 90%,但你在 onClick
中调用 props.action
,但没有向操作 属性 传递任何内容。
由于您已经拥有一切,您可以将使用 Like 组件的行更改为:
<Like liked={active} action={changeLike} />
我有一个名为 beercard 的 React 组件,它为我填充了一个项目并添加了一个赞按钮,这是 Beercard 文件:
function Beercard(props) {
const [active, setActive] = useState(false);
const changeLike = () => {
setActive(!active)
}
return (
<BeerCard>
<Content>
<Lockup text={props.description} tag="h3" title={props.title}/>
</Content>
<ImagContainer>
<Like liked={active} />
<Image url={props.image}/>
</ImagContainer>
</BeerCard>
)
}
然后我有 Like 组件,我将使用它来处理 onClick:
const Icon = styled.svg`
width: 32px;
height: 32px;
stroke: white;
stroke-width: 2px;
fill: ${props => props.liked ? 'white' : 'transparent'};
`
const like = (props) => {
return (
<LikeButton onClick={props.action}>
<Icon liked={props.liked}>
<path
id="heart-icon"
d="M16,28.261c0,0-14-7.926-14-17.046c0-9.356,13.159-10.399,14-0.454c1.011-9.938,14-8.903,14,0.454
C30,20.335,16,28.261,16,28.261z"
/>
</Icon>
</LikeButton>
)
}
一切正常,即 css 用于填充和未填充,然后如果我在 beercard 文件中将状态设置为 true,它会将心脏设置为 active/fills。但是 onClick 函数没有做任何事情,我不确定如何在两个文件之间进行通信以添加此事件。这是一个简单的 on/off 切换 true 和 false 但我不知道如何处理事件,有人可以看到我需要做什么吗?
如果我没理解错的话,您只需要将所需的函数作为 属性 传递给 Like 组件即可。你实际上已经完成了 90%,但你在 onClick
中调用 props.action
,但没有向操作 属性 传递任何内容。
由于您已经拥有一切,您可以将使用 Like 组件的行更改为:
<Like liked={active} action={changeLike} />