React值不会在另一个页面上更新(useState)
我的React应用程序有问题。我正在尝试使用React Hooks重写代码。但在使用useState
钩子时,我的值不会像使用setState
时那样在“概述”页面上更新。代码摘录如下。App.js:
const App = () => {
const [values, setValues] = useState({
name: "",
email: "",
phone: "",
schoolName: "",
studyTitle: "",
completion: "",
studyStartDate: "",
studyEndDate: "",
companyName: "",
positionTitle: "",
mainTasks: "",
isFormSaved: false,
btnText: "Save info"
});
const handleButtonClick = () => {
setValues({
isFormSaved: !values.isFormSaved
});
if (!values.isFormSaved) {
setValues((values) => ({ ...values, btnText: "Edit info" }));
} else {
setValues((values) => ({ ...values, btnText: "Save info" }));
}
};
const handleChange = (e) => {
setValues({ ...values, [e.target.name]: e.target.value });
};
const overview = (
<section className="overview">
<Overview data={values} />
</section>
);
const form = (
<section className="editInfo">
<GeneralInfo
onChange={handleChange}
disabled={values.isFormSaved}
placeholder={values}
/>
<Experience
onChange={handleChange}
disabled={values.isFormSaved}
placeholder={values}
/>
<Practice
onChange={handleChange}
disabled={values.isFormSaved}
placeholder={values}
/>
</section>
);
return (
<div className="app">
<h1>CV Application</h1>
{values.isFormSaved ? overview : form}
<button onClick={handleButtonClick}>{values.btnText}</button>
</div>
);
};
export default App;
Overview.js:
export default function Overview(values) {
return (
<div>
<section>
<h2>Personal information</h2>
<p>Name: {values.data.name}</p>
<p>Email: {values.data.email}</p>
<p>Phone Number: {values.data.phone}</p>
</section>
<section>
<h2>Educational experience</h2>
<p>School name: {values.data.schoolName}</p>
<p>Title of study: {values.data.studyTitle}</p>
<p>Graduated: {values.data.completion}</p>
<p>
Date of study: {values.data.studyStartDate} -{" "}
{values.data.studyEndDate}
</p>
</section>
<section>
<h2>Practical Experience</h2>
<p>Company name: {values.data.companyName}</p>
<p>Position title: {values.data.positionTitle}</p>
<p>Main tasks: {values.data.mainTasks}</p>
</section>
</div>
);
}
和其中一个组件文件- Practice.js:
export default function Practice(values) {
return (
<form>
<fieldset>
<legend>
<strong>EXPERIENCE</strong>
</legend>
<label>
Company name:
<input
type="text"
id="companyName"
onChange={values.onChange}
disabled={values.disabled}
placeholder={values.placeholder.companyName}
/>
</label>
<label>
Position:
<input
type="text"
id="positionTitle"
onChange={values.onChange}
disabled={values.disabled}
placeholder={values.placeholder.positionTitle}
/>
</label>
<label>
Main tasks:
<input
type="text"
id="mainTasks"
onChange={values.onChange}
disabled={values.disabled}
placeholder={values.placeholder.mainTasks}
/>
</label>
</fieldset>
</form>
);
}
我应该使用useEffect
让值的更改反映在我的站点上吗?
提前感谢您的回答。
转载请注明出处:http://www.jlunlp.com/article/20230331/2265633.html
随机推荐
-
react句柄值更改
我有一个反应代码。有一个单选按钮。当选择一个值时,将调用“handleChange”方法。正确打印新的单选按钮选定值。在handlechange中,我无法将值传递给updateCustomerConfiguration。此方法将调用我的ed...
-
React - checkbox值是未定义的,尽管有一个默认值
我有一个小问题,如果输入框没有被触摸,那么在第一个复选框之后选中的所有复选框上的size和maxArrayElements都是未定义的。如果未被触摸,它们都被设置为默认的1。因此,在沙箱中,选择一个数据模式,selectorField,选中...
-
将React表单值保存到firebase实时数据库
我已经完成了这段代码,它在编写console.log()方法时正确地显示了控制台输出,但它没有将代码存储到我的数据库中。它没有显示任何其他错误,但没有将数据存储到数据库,所以请告诉我如何更改以存储到数据库。代码如下:import React...
-
更改属性值时,React不会重新渲染组件
谁能给我解释一下为什么在这个例子中,在Component1更新自己的状态后,Component2没有改变背景颜色?我将背景颜色作为一个值从其他组件的状态传递给组件作为道具,但它不能像我预期的那样工作。当你在边框上点击一次,新渲染的框应该会在...
-
如何编辑本地存储值react?
我有两个组件Display.jsx和DisplayList.jsx。组件协同工作以显示本地存储中的值。问题出在DisplayList.JSX handleEdit()方法切片上。Github project我的想法是:我在这个论坛上问了如何...
-
React bootstrap - Dropdown值在handleSelect上不会更改
在选择在页面上呈现正确的数据后更改下拉标题时出现问题。我登陆这个页面与下拉列表中选择的选项作为道具。但是,当我试图从下拉列表中更改其他选项时,它会返回到从属性中选择的选项。但是如果我直接转到这个页面,下拉菜单中的第一个选项是选中的,并且不能...
-
在react-select中选择选项时,输入值不会更改
我正在使用react-select在我的react应用程序中定义一个选择输入控件。这就是我使用组件的方式:Select onChange={function(e) {console.log(e)}} options={[ ...
-
react路由器渲染方法中的Props值不会随Firebase firestore onsnapshot实时更新而更新
const [documents, setDocuments] = useState() useEffect(()={ const unsubscribe = firebase .firestore() ...
-
如何只访问React Redux值一次?
我只想从redux存储中获取一次值,并在useEffect函数中使用它一次。但是,useSelector需要在组件的根级别上,因此每次渲染都会运行它。这意味着如果我的redux存储中的值被更新,所有子组件也会被更新。我不希望这样的事情发生。...
-
异步函数中的React钩子值未更新
我正在尝试用下面的代码验证使用钩子的字段:const validate = async () = { if (!new ValidateFields().checkIfValidSnn(snn.value))...