【发布时间】:2019-10-19 15:03:00
【问题描述】:
在一个 react-native 项目中,我使用的是 react-native-camera-roll-picker。这个想法是用户选择一个图像,并且标题更改为“x selected”之类的内容。试图用钩子来解决这个问题。代码如下:
import React, { useState } from 'react';
import RNCameraRollPicker from 'react-native-camera-roll-picker';
import { Header } from './header';
import { Container, Content } from 'native-base';
export const CameraRollPicker = props => {
const [images, setImages] = useState([]);
return (
<Container>
<Header title={images.length + ' Selected'} />
<Content>
<RNCameraRollPicker
selected={images}
callback={imgs => setImages(imgs)}
groupTypes="All"
/>
</Content>
</Container>
);
};
When an image is selected the above does not re-render the component.
现在,如果我将回调线更改为:
callback={imgs => setImages(imgs.map(i => i))}
繁荣它的工作原理。现在我怀疑setState 不知何故没有检测到状态的变化,因此不会再次渲染组件。因此,我认为我应该创建一个数组的副本(例如map),这似乎可以解决问题。我是钩子的新手(实际上是我的第一个钩子组件),我看不到反应教程中明确提到的任何内容来解释这一点。我敢肯定你们中的一个聪明人对此有解释吗? :)
【问题讨论】:
标签: reactjs react-native react-hooks