У меня есть компонент React, который возвращает таблицу с данными.
Я также использую портал React для открытия нового Div в верхней части таблицы.
Я хочу передать данные, которые находится в таблице для React Portal.
В приведенном ниже коде видно, что портал называется MyPortal, а таблица называется ResearchTable.
Данные, отображаемые в таблице называется 'data', и в этом примере я показываю 'data.astronomyTitle' в таблице.
Я также хочу показать 'data.astronomyTitle' в портале React, который появляется.
Но я не могу понять, как получить доступ к «данным» в моей части кода MyPortal, потому что «данные» есть только в части таблицы.
Итак, мой вопрос, есть ли способ передать данные для MyPortal? Или, может быть, сохранить его в глобальной переменной, к которой затем может получить доступ MyPortal?
Спасибо!
const MyPortal = ({ children }) => (
ReactDOM.createPortal(
<div id="portal_GalaxyDetails">
{children}
</div>,
document.getElementById('portal-root'),
)
)
function ResearchTable() {
const [isShown, setIsShown] = React.useState(false);
const hide = () => setIsShown(false);
const show = () => setIsShown(true);
{
Header: 'Research Opportunities',
columns: [
{
id: <td>{data.astroId}</td>
},
{
title: <td><a href="#" onClick={show}>{data.astronomyTitle}</a></td>
}
]
const [data, setData] = React.useState([]);
React.useEffect(() => {
galaxyData().then(res => {
setData(res.data);
});
}, []);
return (
<div id="mainContent">
<table>
<tr>
{columns}
</tr>
</table>
</div>
{isShown && (
<MyPortal>
<p>This is my portal</p>
<button onClick={hide}>Close</button>
</MyPortal>
)}
);