Reactjs 使用道具后更新道具
我反应不好 但我知道 我有问题。我的流程: 客户打开“创建新用户”页面->然后创建用户->然后重定向“成功”页面。 之后,当客户再次进入“创建新用户”页面时,->他进入“成功”页面而不创建。 我知道这是因为我用错道具了 我怎样才能修好它 my Component.jsReactjs 使用道具后更新道具,reactjs,react-props,Reactjs,React Props,我反应不好 但我知道 我有问题。我的流程: 客户打开“创建新用户”页面->然后创建用户->然后重定向“成功”页面。 之后,当客户再次进入“创建新用户”页面时,->他进入“成功”页面而不创建。 我知道这是因为我用错道具了 我怎样才能修好它 my Component.js class addUser extends Component { handleSubmit(e) { e.preventDefault(); const user = {
class addUser extends Component {
handleSubmit(e) {
e.preventDefault();
const user = {
name: this.state.name,
}
this.props.newUser(user);
}
componentDidUpdate(prevProps, prevState){
const { isCreateNewUser } = this.props.isCreateNewUser;
if(isCreateNewUser == true) {
this.props.history.push('/')
}
}
render() {
<form className="add-new-post" autoComplete="off" onSubmit={ this.handleSubmit }>
</form>
}
this.props.createUser(user)
.then(data => {
if(data.data[0]){
this.props.history.push('/');
}
}).catch(error => {
console.log("error", error);
})
my action.js
export const newUser = (subscription) => dispatch => {
axios.post('/api/user/add', subscription)
.then(res => {
dispatch({
type: ADD_USER,
payload: res.data
});
});
}
export const createUser = (user) => async dispatch => {
const res = await axios.post('/api/user/add', subscription);
dispatch({ type: SOME_ACTION_TYPE, payload: res });
return res;
}
你的问题看起来像一个道具或状态,不会回到他的初始值 及 是否创建新用户的对象?因为当你破坏一个非对象时,它应该是这样的 const{isCreateNewUser}=this.props; 您在哪里将isCreateNewUser更新为true我的解决方案: my action.js
export const newUser = (subscription) => dispatch => {
axios.post('/api/user/add', subscription)
.then(res => {
dispatch({
type: ADD_USER,
payload: res.data
});
});
}
export const createUser = (user) => async dispatch => {
const res = await axios.post('/api/user/add', subscription);
dispatch({ type: SOME_ACTION_TYPE, payload: res });
return res;
}
my Component.js
class addUser extends Component {
handleSubmit(e) {
e.preventDefault();
const user = {
name: this.state.name,
}
this.props.newUser(user);
}
componentDidUpdate(prevProps, prevState){
const { isCreateNewUser } = this.props.isCreateNewUser;
if(isCreateNewUser == true) {
this.props.history.push('/')
}
}
render() {
<form className="add-new-post" autoComplete="off" onSubmit={ this.handleSubmit }>
</form>
}
this.props.createUser(user)
.then(data => {
if(data.data[0]){
this.props.history.push('/');
}
}).catch(error => {
console.log("error", error);
})
我不知道这是好还是坏,但它的工作。
谢谢您是否在创建用户后重置您的状态?我重置了状态,但此.props.isCreateNewUser在创建用户后始终为true否我有问题此.props.isCreateNewUser在创建用户后始终为true如果您在redux更新isCreateNewUser,您将从redux得到它始终为true,因为您在那里更新了该状态将保持为真尝试在组件内部执行一个状态,当您发送以创建它时,该状态将使其变为真,并且您将被重定向。如果每次您创建新内容时,将isCreateNewUser变为真,并使其变为假,则每次都会因此呈现状态管理