牛魔王的故事
2022-06-16 15:06:29
當(dāng)有人在輸入電影標(biāo)題后單擊“加載電影”時,我正在嘗試更新一系列電影,但是使用 useState 并執(zhí)行setFilms(films => [...films, data.results]);(更新數(shù)組并將新電影添加到現(xiàn)有的空電影)不起作用。我應(yīng)該怎么辦?這是我的代碼:function HomeScreen({ navigation }) { const [films, setFilms] = useState([]); let searchedText = ""; let page = 0; let totalPages = 0; const searchInputChanged = text => { searchedText = text } const loadFilms = () => { if(searchedText.length > 0) { getFilmsFromApiWithSearchedText(searchedText, page+1).then(data => { page = data.page totalPages = data.total_pages setFilms(films => [...films, data.results]); console.log(films) }) } } return ( <View> <Text>Home</Text> <TextInput placeholder='Film title' onChangeText={(text) => searchInputChanged(text)} /> <Button title="Load films" onPress={() => loadFilms()} /> </View> );}
2 回答

holdtom
TA貢獻(xiàn)1805條經(jīng)驗 獲得超10個贊
你試過這個嗎?
setFilms(films => [...films,...data.results]);
Stackblitz:https ://stackblitz.com/edit/react-hooks-use-state-4t5sni
當(dāng)您執(zhí)行 [...films,data.results] 時,它將依次插入結(jié)果數(shù)組而不是結(jié)果的值。
運(yùn)行以下代碼段以查看
let arr=[1,2,3];
let arr2=[4,5,6];
console.log([...arr,arr2]);
.as-console-wrapper { max-height: 100% !important; top: 0; }

慕娘9325324
TA貢獻(xiàn)1783條經(jīng)驗 獲得超4個贊
這樣做很簡單:
setFilms([...films, ...data.results])
useState
鉤子的工作方式與this.setState
. 這要簡單得多。不再需要基于回調(diào)的回調(diào)prevState
。
添加回答
舉報
0/150
提交
取消