为了账号安全,请及时绑定邮箱和手机立即绑定

使用 useState React Native 编辑数组

使用 useState React Native 编辑数组

牛魔王的故事 2022-06-16 15:06:29
当有人在输入电影标题后单击“加载电影”时,我正在尝试更新一系列电影,但是使用 useState 并执行setFilms(films => [...films, data.results]);(更新数组并将新电影添加到现有的空电影)不起作用。我应该怎么办?这是我的代码: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贡献1805条经验 获得超10个赞

你试过这个吗?


setFilms(films => [...films,...data.results]);

Stackblitz:https ://stackblitz.com/edit/react-hooks-use-state-4t5sni


当您执行 [...films,data.results] 时,它将依次插入结果数组而不是结果的值。


运行以下代码段以查看


let arr=[1,2,3];

let arr2=[4,5,6];

console.log([...arr,arr2]);

.as-console-wrapper { max-height: 100% !important; top: 0; }


查看完整回答
反对 回复 2022-06-16
?
慕娘9325324

TA贡献1783条经验 获得超4个赞

这样做很简单:

setFilms([...films, ...data.results])

useState钩子的工作方式与this.setState. 这要简单得多。不再需要基于回调的回调prevState


查看完整回答
反对 回复 2022-06-16
  • 2 回答
  • 0 关注
  • 135 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号