如何使用 React Hook 将在子进程中创建的数据发送给父进程?
How to send data created in child to parent using react hook?
如问题所述,我想做的是将子值从子传递给父。我想在我的父函数中调用子变量。
家长代码
function App() {
let [value, setVal] = useState(null);
...
const onLayoutChange = (layout) => {
console.log(value);
if (value != null) {
value.resize();
}
// chartInstance.resize();
};
return (
<ResponsiveGridLayout
layouts={layout}
onLayoutChange={() => onLayoutChange(layout)}
>
<div key="1">
<Card style={styles} val={setVal} />
</div>
</ResponsiveGridLayout>
);
}
#1 儿童代码
export default function SimpleCard(props) {
return (
<Card style={props.style.main}>
<CardContent>
<NewvsReturnVisitors value={props.val} />
</CardContent>
</Card>
);
}
#2 儿童代码
const Newvsresturnvisitors = (props) => {
...
let [val, setVal] = useState(null);
let chartInstance = null;
props.value(val);
function renderChart() {
const renderInstance = echarts.getInstanceByDom(chart.current);
if (renderInstance) {
chartInstance = renderInstance;
setVal(chartInstance);
} else {
chartInstance = echarts.init(chart.current, null, {
width: 500,
height: 300
});
setVal(chartInstance);
// chartInstance.resize();
}
chartInstance.setOption(option);
}
...
}
export default Newvsresturnvisitors;
我不确定这是否可行,非常感谢任何建议。
这是我的 codesandboxlink
可以在父组件中创建状态变量,然后将setXXX方法传递给子组件,在子组件中调用setXXX方法将变量传递给父组件。
const changeLayout = (layout) => {
// chartInstance.resize();
};
<ResponsiveGridLayout
layouts={layout}
onLayoutChange={changeLayout}
>
试试这样使用道具li
如问题所述,我想做的是将子值从子传递给父。我想在我的父函数中调用子变量。
家长代码
function App() {
let [value, setVal] = useState(null);
...
const onLayoutChange = (layout) => {
console.log(value);
if (value != null) {
value.resize();
}
// chartInstance.resize();
};
return (
<ResponsiveGridLayout
layouts={layout}
onLayoutChange={() => onLayoutChange(layout)}
>
<div key="1">
<Card style={styles} val={setVal} />
</div>
</ResponsiveGridLayout>
);
}
#1 儿童代码
export default function SimpleCard(props) {
return (
<Card style={props.style.main}>
<CardContent>
<NewvsReturnVisitors value={props.val} />
</CardContent>
</Card>
);
}
#2 儿童代码
const Newvsresturnvisitors = (props) => {
...
let [val, setVal] = useState(null);
let chartInstance = null;
props.value(val);
function renderChart() {
const renderInstance = echarts.getInstanceByDom(chart.current);
if (renderInstance) {
chartInstance = renderInstance;
setVal(chartInstance);
} else {
chartInstance = echarts.init(chart.current, null, {
width: 500,
height: 300
});
setVal(chartInstance);
// chartInstance.resize();
}
chartInstance.setOption(option);
}
...
}
export default Newvsresturnvisitors;
我不确定这是否可行,非常感谢任何建议。
这是我的 codesandboxlink
可以在父组件中创建状态变量,然后将setXXX方法传递给子组件,在子组件中调用setXXX方法将变量传递给父组件。
const changeLayout = (layout) => {
// chartInstance.resize();
};
<ResponsiveGridLayout
layouts={layout}
onLayoutChange={changeLayout}
>
试试这样使用道具li