【发布时间】:2021-04-08 03:29:27
【问题描述】:
我正在开发一个弹出组件,其中父组件具有以下代码
import * as React from "react";
import "./styles.css";
import Popup from "./Popup";
export default function App() {
return (
<div className="App">
<h1>Hello CodeSandbox</h1>
<h2>Start editing to see some magic happen!</h2>
<Popup
src="https://picsum.photos/200"
alt="Fog"
coreValue="Customer Focus"
/>
<Popup
src="https://picsum.photos/200/300?grayscale"
alt="Grey Mountains"
coreValue="Persistence"
/>
</div>
);
}
子组件应根据道具呈现自定义弹出窗口
import * as React from "react";
import { useState } from "react";
interface Props {
src: string;
alt: string;
coreValue: string;
}
export default function Popup({ src, alt, coreValue }: Props): JSX.Element {
const [customerFocus, setCustomerFocus] = useState(false);
const [persistence, setPersistence] = useState(false);
const toggleCustomerFocus = () => {
setCustomerFocus(!customerFocus);
};
const togglePersistence = () => {
setPersistence(!persistence);
};
const data = [
{
customerFocus: {
title: "Dummy Title 1",
content: "Dummy Content 1"
},
persistence: {
title: "Dummy Title 2",
content: "Dummy Content 2"
}
}
];
return (
<>
<figure onClick={toggleCustomerFocus}>
<img src={src} alt={alt} />
<figcaption>{coreValue}</figcaption>
</figure>
{customerFocus && (
<section>
<h4>{data[0].customerFocus.title}</h4>
<p>{data[0].customerFocus.content}</p>
<button onClick={toggleCustomerFocus}>Close 1</button>
</section>
)}
{persistence && (
<section>
<h4>{data[1].persistence.title}</h4>
<p>{data[1].persistence.content}</p>
<button onClick={togglePersistence}>Close 2</button>
</section>
)}
</>
);
}
在<figure onClick={toggleCustomerFocus}> 处,我想将自定义onClick 函数从父级传递给其子级,以便第一个弹出窗口在单击时呈现虚拟标题1 和虚拟内容1,第二个弹出窗口呈现虚拟标题2 和虚拟单击时的内容 2。截至目前,两者都在单击时呈现相同的弹出窗口。
如何将自定义 onClick 函数从父级发送到子级?
【问题讨论】:
-
如果您使用的是 typescript,请使用 react 元素而不是 jsx 元素。这并不能回答你的问题,但让我看看这个问题。
标签: javascript reactjs typescript