我正在恢復這樣的資料:
user:
[
{
name: "John",
city: "London",
age: "21",
language: "Enlgish"
}
]
如何將值language放入使用狀態陣列內的物件中?到目前為止的代碼:
const [language, setLanguage] = useState([])
useEffect(() => {
axios
.get('api').then((response) => {
response.data.user.map((user) => {setLanguage([{...user, added:user.language)]}))
}, [])
我知道這是錯誤的,但我想要的結果是:
language:
[
{
added: "English"
}
]
我該怎么做?
uj5u.com熱心網友回復:
您可以為此使用推送。
const [language, setLanguage] = useState([])
useEffect(() => {
axios
.get('api').then((response) => {
response.data.user.map((user) => language.push({added:user.language}))})
}, [])
或者如果你想重新渲染一些東西,需要設定這個值;
useEffect(() => {
const langValue = []
axios
.get('api').then((response) => {
response.data.user.map((user) => langValue.push({added:user.language}))})
setLanguage(langValue)
}, [])
或者您可以使用“添加”鍵將狀態宣告為物件。然后在添加鍵下添加語言:
const [language, setLanguage] = useState({added: []})
useEffect(() => {
axios
.get('api').then((response) => {
response.data.user.map((user) => language.added.push(user.language))})
}, [])
輸出是:
language:{
added: [
0: "Enlgish"
]
}
uj5u.com熱心網友回復:
您可以使用forEach而不是地圖并稍微更改代碼
useEffect(() => {
axios
.get('api').then((response) => {
response.data.user.forEach((u) => setLanguage([...language, { added: u.language }]))
}, [])
uj5u.com熱心網友回復:
如果要回圈并使用 setState,則需要使用先前的狀態,如下所示:
useEffect(() => {
axios
.get('api').then((response) => {
response.data.user.map((eachUser) => {
setState(prevState => {
return [...prevState, {added: eachUser.language}]
});
}, [])
或者您可以這樣做以達到預期的結果:
useEffect(() => {
axios
.get('api').then((response) => {
let newLanguages = response.data.user.map((eachUser) => ({added: eachUser.language}));
setState([...languages, ...newLanguages])
}, [])
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/504815.html
標籤:javascript 反应
