【问题标题】:Get value from response and transfer to another component in React从响应中获取值并转移到 React 中的另一个组件
【发布时间】:2021-09-14 16:56:21
【问题描述】:

我有这个handleSubmit,它返回一个我应该在另一个组件中使用的密钥(verifyCode)。如何将此 verifyCode 传递给另一个组件?

const SendForm = ({ someValues }) => {

      const handleSubmitAccount = () => {
        dispatch(createAccount(id, username))
        
          .then((response) => {
            // I get this value from data.response, its works
            const { verifyCode } = response;
          })
          .catch(() => {
          });
      };

      return(
         //the form with handleSubmitAccount()
       )
}

export default SendForm;

另一个组件不是子组件,它是在这个提交步骤之后加载的。但是不知道怎么转const verifyCode

这是加载组件的视图,是一步一步的视图,一个接一个地加载,我需要在FormConfirmation中获取const verifyCode

<SendForm onSubmit={handleStepSubmit} onFieldSubmit={handleFieldSubmit} />
<FormConfirmation onSubmit={handleStepSubmit} onFieldSubmit={handleFieldSubmit} />

有人知道我该怎么做吗?

【问题讨论】:

  • 您必须将某些状态保持在更高级别(共享父级或全局)并将其设置在那里。与此相关的其他组件在哪里?

标签: javascript reactjs api react-hooks


【解决方案1】:

您需要将状态向上移动到具有两个子级的组件,然后传递一个更新为 prop 的函数

import React from "react";

export default function App() {
    const [value, setValue] = React.useState(0);
        return (
            <div className="App">
                <Updater onClick={() => setValue(value + 1)} />
                <ValueDisplay number={value} />
           </div>
       );
}

 const Updater = (props) => <div onClick={props.onClick}>Update State</div>;
 const ValueDisplay = (props) => <div>{props.number}</div>;

查看docs here

对于更复杂的组件结构或您传递多个级别的位置,您可能需要查看reactContext

import React from "react";

//Set Default Context
const valueContext = React.createContext({ value: 0, setValue: undefined });

export default function App() {
    const [value, setValue] = React.useState(0);
        return (
           <div className="App">
              {/** Pass in state and setter as value */}
              <valueContext.Provider value={{ value: value, setValue }}>
                  <Updater />
                  <ValueDisplay />
              </valueContext.Provider>
         </div>
    );
}

const Updater = () => {
     /** Access context with hook */
     const context = React.useContext(valueContext);
     return (
         <div onClick={() => context.setValue(context.value + 1)}>Update State</div>
     );
};
 const ValueDisplay = () => {
     /** Access context with hook */
     const context = React.useContext(valueContext);
      return <div>{context?.value}</div>;
 };

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    • 2022-08-17
    • 2017-02-21
    • 1970-01-01
    • 1970-01-01
    • 2020-03-14
    • 2021-03-28
    相关资源
    最近更新 更多