【发布时间】:2021-05-21 20:19:17
【问题描述】:
我最近开始使用 NextJS 和 React。
我正在尝试在我的应用程序中实现多页表单,但我不知道如何将表单数据从一个页面持久化并传递到另一个页面。
有很多关于使用状态管理库和上下文 API 的指南,但它们都在 reactjs 中或定义了不同组件之间的使用。
我的 _app.js 看起来像这样:
const AppComponent = ({ Component, pageProps, currentUser }) => {
return (
<div>
<AppWrapper>
<Header currentUser={currentUser} />
<Component {...pageProps} />
</AppWrapper>
</div>
);
};
AppComponent.getInitialProps = async (appContext) => {
const client = buildClient(appContext.ctx);
const { data } = await client.get('/api/client/currentuser');
let pageProps = {};
if (appContext.Component.getInitialProps) {
pageProps = await appContext.Component.getInitialProps(appContext.ctx);
}
return {
pageProps,
...data,
};
};
export default AppComponent
上下文状态.js
import { createContext, useContext } from 'react';
const AppContext = createContext();
export function AppWrapper({ children }) {
let sharedState = {
/* whatever you want */
};
return (
<AppContext.Provider value={sharedState}>{children}</AppContext.Provider>
);
}
export function useAppContext() {
return useContext(AppContext);
}
现在我需要将表单的数据保存在第 1 页(姓名、姓氏)并将其传递到第 2 页(电子邮件和电话),最后是我想要包含所有字段的摘要。如何从以下页面设置 shared_state?
step1.js 从“反应”导入反应;
function Step1(props) {
return (
<div>
<p>Name: <input name="name" /></p>
<p>Surname: <input name="surname" /></p>
</div>
);
}
export default Step1;
step2.js
import React from "react";
export default function Step2(props) {
return (
<div>
<p>Email: <input name="email" /></p>
<p>Phone: <input name="Phone" /></p>
</div>
);
如何在步骤 1 中根据用户数据设置状态并将数据传递到步骤 2。 谁能帮我解决这个问题?
【问题讨论】:
标签: reactjs react-redux next.js state-management