【发布时间】:2021-12-20 12:37:56
【问题描述】:
我正在做一个项目,其中第一个屏幕是一个简单的输入来放置名称,然后它转到另一个屏幕(另一个组件),我需要使用用户之前输入的值来显示自定义内容。我尝试用 Redux 来做,但我很难将输入值存储在 Redux Store 中,然后在另一个组件中使用该值。我想知道如何存储这个值,然后在另一个组件中使用它(老实说,我不知道该怎么做)。如果有人愿意,我也可以显示其他组件代码。
我的第一个组件(用户输入他的名字):
import React, {useState, useEffect} from "react";
import "../_assets/signup.css";
import "../_assets/App.css";
import { Link } from 'react-router-dom';
function Signup() {
const [name, setName] = useState('')
const [buttonGrey, setButtonGrey] = useState('#cccccc')
useEffect(() => {
if(name!== '') {
setButtonGrey("black")
} else {
setButtonGrey('#cccccc')
}
}, [name])
const handleSubmitForm= (e) => {
e.preventDefault()
store.dispatch({
type: 'SAVE_USER',
payload: name,
})
console.log({name})
}
const handleChangeName = (text) => {
setName(text)
}
return (
<div className="container">
<div className="LoginBox">
<form onSubmit={handleSubmitForm}>
<h2>Welcome to codeleap network</h2>
<text>Please enter your username</text>
<input
type="text"
name="name"
value={name}
onChange = {e => handleChangeName(e.target.value)}
placeholder="Jane Doe"
/>
<div className="button">
<Link to="/main">
<button
type="submit"
style={{backgroundColor: buttonGrey}}
disabled={!name}
>
ENTER
</button>
</Link>
</div>
</form>
</div>
</div>
);
}
export default Signup;
我的 store.js:
import { createStore } from 'redux';
const reducer = (state= (''), action) => {
switch(action.type) {
case 'SAVE_USER': {
state = {...state, name: action.payload}
}
default: return state
}
}
const store = createStore(reducer)
export {store}
标题
【问题讨论】:
-
这段代码根本没有使用 Redux。你是在问如何开始使用 Redux 来持久化状态? redux-toolkit.js.org你自己尝试过什么?
-
是的,我读过很多关于 Redux 的文章,但我承认我对完成我需要的东西了解得不够多,所以我想知道“从哪里开始”。 (我编辑并添加了商店代码)。
-
如果一个答案解决/解决了您的问题/问题,那么您将被邀请标记/接受它 (stackoverflow.com/help/someone-answers)。干杯,祝你好运!
标签: javascript reactjs redux react-redux react-hooks