javascript - 使用 useState React Native 编辑数组
问题描述
当有人在输入电影标题后单击“加载电影”时,我正在尝试更新一系列电影,但是使用 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>
);
}
解决方案
这样做很简单:
setFilms([...films, ...data.results])
useState
钩子的工作方式与this.setState
. 这要简单得多。不再需要基于回调的回调prevState
。
推荐阅读
- machine-learning - 通过 PV-DBOW 学习的 doc 向量是否等同于 doc 中包含的词向量的平均值/总和?
- entity-framework-core - 为什么初始 Entity Framework Core 添加迁移会跳过配置?
- python - opencv 设置相机分辨率 windows vrs linux
- python - 将字典传递给 Django 表单
- excel - 遍历工作表和单元格以查找值和运行时错误 13 类型不匹配
- javascript - NodeJS + Express:跨多个路由共享会话
- r - 通过列名中的 ID 操作数据框列
- r - 在根据条件将一个 data.frame 的值添加到另一个时保留行顺序
- python - 在 Pandas Dataframe 中查找和替换各种子字符串
- r - 连续不适用的次数