[英]Pass state back to parent AND pass other props from parent to child in React
I know how to pass the state from child to parent.我知道如何将 state 从孩子传递给父母。 And I know how to pass props from parent to child.
而且我知道如何将道具从父母传给孩子。
However, the obvious way for doing both at the same time doesn't seem to work as I expected.但是,同时进行这两种操作的明显方法似乎并没有像我预期的那样起作用。 Please see an example below.
请看下面的例子。
import React, { useState } from "react";
const Child = (props, { other }) => {
// This is what I'd like to achieve but it ignores the {other} prop and doesn't received it from parent
// const Child = ({ other }) => { // Works, but the sending of props from child to parent stops working
// const Child = (props) => { // Works too but obviously the 'other' prop is not passed anymore
return (
<>
Child
<button onClick={() => props.setValue("New stuff")}>Click!</button>
<p>{other}</p>
</>
);
};
const Parent = () => {
const [value, setValue] = useState("Default value");
return (
<>
Parent <Child setValue={setValue} other={"Something else"} />
<p>{value}</p>
</>
);
};
export default Parent;
I tried passing both as {props, other}
, (props, other)
, ({props, {other}})
but nothing worked.我尝试将两者都传递为
{props, other}
, (props, other)
, ({props, {other}})
但没有任何效果。
Use const Child = ({other, ...props }) => {
使用
const Child = ({other, ...props }) => {
CodeSandbox: https://codesandbox.io/s/romantic-gagarin-3cgto代码沙盒: https://codesandbox.io/s/romantic-gagarin-3cgto
The props
parameter in this case actually contains both of the setValue
and other
props.本例中的
props
参数实际上包含setValue
和other
props。
The destructuring syntax is also helpful for legibility here.解构语法也有助于此处的易读性。
import React, { useState } from "react";
const Child = (props) => {
// destructure both setValue and other out of props
const {setValue, other} = props
return (
<>
Child
<button onClick={() => setValue("New stuff")}>Click!</button>
<p>{other}</p>
</>
);
};
const Parent = () => {
const [value, setValue] = useState("Default value");
return (
<>
Parent <Child setValue={setValue} other={"Something else"} />
<p>{value}</p>
</>
);
};
export default Parent;
You can access other
from props
:您可以从
props
访问other
:
import React, { useState } from "react";
const Child = (props) => {
return (
<>
Child
<button onClick={() => props.setValue("New stuff")}>Click!</button>
<p>{props.other}</p>
</>
);
};
const Parent = () => {
const [value, setValue] = useState("Default value");
return (
<>
Parent <Child setValue={setValue} other={"Something else"} />
<p>{value}</p>
</>
);
};
export default Parent;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.