React-native로 앱 개발을 진행하던 중 아래와 같은 오류가 발생하였다.

Error: Objects are not valid as a React child (found: object with keys {_U, _V, _W, _X}). If you meant to render a colllection of children, use an array instead.
오류가 발생한 소스코드
const Profile = async () => {
const [images, setImages] = useState([]);
const openPicker = async () => {
try {
const response = await MultipleImagePicker.openPicker({
usedCameraButton: false,
maxVideo: 1,
selectedAssets: images,
isExportThumbnail: true,
isCrop: true,
isCropCircle: true,
});
console.log('response: ', response);
setImages(response);
console.log('Images: ', images);
} catch (e) {
console.log(e.code, e.message);
}
};
return (
<Container>
<View style={{flex:1, padding:16}}>
<Button title='show picker' onPress={openPicker}></Button>
</View>
</Container>
);
};
export default Profile;
Solution
처음에 콘솔 창을 통해 확인한 오류문에서 {_U, _V, _W, _X} 생뚱맞은 key값이 문제라고 하길래 정확한 문제를 찾지 못했는데 알고보니 render를 포함하는 component는 async로 선언할 수 없다는 걸 알게됐고 해당 부분을 고쳐주어 간단하게 해결할 수 있었다.
수정한 코드
const Profile = () => {
const [images, setImages] = useState([]);
const openPicker = async () => {
try {
const response = await MultipleImagePicker.openPicker({
usedCameraButton: false,
maxVideo: 1,
selectedAssets: images,
isExportThumbnail: true,
isCrop: true,
isCropCircle: true,
});
console.log('response: ', response);
setImages(response);
console.log('Images: ', images);
} catch (e) {
console.log(e.code, e.message);
}
};
return (
<Container>
<View style={{flex:1, padding:16}}>
<Button title='show picker' onPress={openPicker}></Button>
</View>
</Container>
);
};
export default Profile;