【发布时间】:2019-05-02 17:15:53
【问题描述】:
我有一个 react 应用程序,我在其中渲染一些图片和 gif,用户可以将其附加到帖子中。
现在我在每个图像上都有一个onClick 处理程序,这样要么弹出模态操作,使用一些不同的选项,要么删除图片(如果用户按住 ctrl 键):
showModalSpeceficHandler = (event, image) =>{
let index = this.state.images.indexOf(image)
if(event.ctrlKey){
this.state.images.splice(index, 1);
}else{
this.setState(
state => ({imageModalData: image}),
() => this.showModalHandler()
);
}
问题在于,如果满足第一个条件,则视图不会自动更新。而且我不能使用和箭头功能重新渲染,因为我在图像上使用了拼接方法。有没有办法让组件重新渲染,以便更新 UI?
我不确定是否应该将代码封装在 if 条件内、单独的处理程序内,还是可以使用箭头函数语法或类似的语法?
编辑:
我更新了方法,所以我动态设置了状态:
if(event.ctrlKey){
this.setState(
state => ({images: this.state.images.splice(index, 1)})
)
现在的问题是我想返回整个数组,而不仅仅是选定的图片。
【问题讨论】:
-
尝试使用 set state 而不是直接尝试改变 state -> this.state.images.splice(index, 1);
-
我投票结束这个问题,因为这是官方教程和文档的第一页所涵盖的基本 React 用法。
标签: javascript reactjs