如何在 axios 函数中将挂钩状态从一个组件传递到另一个组件?
How to pass a hook state from one component to another in a axios function?
我正在尝试将挂钩状态传递给 Axios 函数内的另一个组件。
状态初始值为false,但是当方法post发生在axios时,在then()里面
我将状态设置为 true,在本例中为 setShowFlagCreate(true)
我试图将此状态传递给 UserList.js 组件,但我不知道如何操作。
通过后,我想使用此状态在 UserList.js 页面
上显示标志(表示已创建用户。)
我该怎么做?
UserCreate.js
export default function UserCreate({}) {
const [showFlagCreate, setShowFlagCreate] = useState(false)
const save = async () => {
const UserParams = {
userName:
currentUser
Gender: gender,
country: USA,
};
await axios
.post(
process.env.REACT_APP_URL, userParams
)
.then((response) => {
navigate("/userlist");
setShowFlag(true); //I want this state to pass it on the UserList component as true
})
.catch((error) => {
console.log(error);
});
};
}
return(
<div>
</div>
)
UserList.js
export default function UserList() {
const [showFlagCreate, setShowFlagCreate] = useState(false)
useEffect(() => {
axios
.get(process.env.REACT_API_URL + usersParams) //geting the user form db
.then((response) => {
response.data.forEach(function (item) {
let newUser = {
id: user.id,
name: Username,
gender: "male",
description: "stuff",
};
});
})
.catch((error) => {
console.log(error);
});
}, []);
return (
<div>
<FlagCreate show={showFlagCreate} setShow={setShowFlagCreate}/> //passing the props
</div>
);
}
我想获取 UserList 组件中的状态并显示标志,因为状态为真。
FlagCreat.js
export default function FlagCreate({ show, setShow }) {
<div>
<div>
<p>The user that you have been created is saved.</p>
</div>
<div>
<button onClick={() => {setShow(false)}}>
<span >Close</span>
</button>
</div>
}
想法是在 UserCreate.js 中 setShowFlagCreate 变为 true 之后,标志必须显示在 UserCreate 组件中。我怎样才能让它发挥作用?
您可以在 contextApi 中定义此状态并在您需要的任何地方共享它 -
you can read about it here
您应该做的是在调用 navigation
时传递状态 在 UserList
中检索该状态。
用户创建
navigate("/userlist", { state: { showFlag: true } });
用户列表
const { state } = useLocation();
const { showFlag } = state; // use showFlag the way you want.
您可以通过
了解更多它的工作原理
我正在尝试将挂钩状态传递给 Axios 函数内的另一个组件。
状态初始值为false,但是当方法post发生在axios时,在then()里面
我将状态设置为 true,在本例中为 setShowFlagCreate(true)
我试图将此状态传递给 UserList.js 组件,但我不知道如何操作。
通过后,我想使用此状态在 UserList.js 页面
我该怎么做?
UserCreate.js
export default function UserCreate({}) {
const [showFlagCreate, setShowFlagCreate] = useState(false)
const save = async () => {
const UserParams = {
userName:
currentUser
Gender: gender,
country: USA,
};
await axios
.post(
process.env.REACT_APP_URL, userParams
)
.then((response) => {
navigate("/userlist");
setShowFlag(true); //I want this state to pass it on the UserList component as true
})
.catch((error) => {
console.log(error);
});
};
}
return(
<div>
</div>
)
UserList.js
export default function UserList() {
const [showFlagCreate, setShowFlagCreate] = useState(false)
useEffect(() => {
axios
.get(process.env.REACT_API_URL + usersParams) //geting the user form db
.then((response) => {
response.data.forEach(function (item) {
let newUser = {
id: user.id,
name: Username,
gender: "male",
description: "stuff",
};
});
})
.catch((error) => {
console.log(error);
});
}, []);
return (
<div>
<FlagCreate show={showFlagCreate} setShow={setShowFlagCreate}/> //passing the props
</div>
);
}
我想获取 UserList 组件中的状态并显示标志,因为状态为真。
FlagCreat.js
export default function FlagCreate({ show, setShow }) {
<div>
<div>
<p>The user that you have been created is saved.</p>
</div>
<div>
<button onClick={() => {setShow(false)}}>
<span >Close</span>
</button>
</div>
}
想法是在 UserCreate.js 中 setShowFlagCreate 变为 true 之后,标志必须显示在 UserCreate 组件中。我怎样才能让它发挥作用?
您可以在 contextApi 中定义此状态并在您需要的任何地方共享它 - you can read about it here
您应该做的是在调用 navigation
时传递状态 在 UserList
中检索该状态。
用户创建
navigate("/userlist", { state: { showFlag: true } });
用户列表
const { state } = useLocation();
const { showFlag } = state; // use showFlag the way you want.
您可以通过