Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何仅在插入图像时渲染关闭图标?_Javascript_Reactjs - Fatal编程技术网

Javascript 如何仅在插入图像时渲染关闭图标?

Javascript 如何仅在插入图像时渲染关闭图标?,javascript,reactjs,Javascript,Reactjs,我正在尝试创建一个类似于谷歌表单的表单。每当用户插入图像时,我都希望预览图像。现在,我创建了一个函数updateImageLink,在用户插入图像后更新状态。功能如下: updateImageLink = (link, position) => { let questions = [...this.state.questions]; let i = position.question; if (position.option == null) { quest

我正在尝试创建一个类似于谷歌表单的表单。每当用户插入图像时,我都希望预览图像。现在,我创建了一个函数updateImageLink,在用户插入图像后更新状态。功能如下:

updateImageLink = (link, position) => {
   let questions = [...this.state.questions];
   let i = position.question;

   if (position.option == null) {
      questions[i].questionImage = link;
   } else {
      var j = position.option
      questions[i].options[j].optionImage = link;
   }

   this.setState({ questions });
}
假设用户想要删除图像,因此我创建了一个删除按钮,并通过
onClick
prop传递函数,如下所示:

<IconButton
   style={{
      marginLeft: "3px",
      marginTop: "-15px",
      zIndex: 999,
      backgroundColor: "lightgrey",
      color: "grey",
   }}
   size="small"
   onClick={() => {
      this.updateImageLink("", { question: i, option: null });
   }}
>
   <CloseIcon />
</IconButton>
this.state = {
            questions: [
                {
                    questionText: "Question 1",
                    questionImage:null,
                    options: [
                        { optionText: "Option 1",
                          optionImage: null },
                        { optionText: "Option 2",
                          optionImage: null },
                        { optionText: "Option 3",
                          optionImage: null },
                        { optionText: "Option 4",
                          optionImage: null }
                    ],
                    correctAnswer: ""
                }
            ],
            openUploadImagePop: false,
            imagePositionData: {
                question: null,
                option: null
            }
      }
this.state = {
            questions: [
                {
                    questionText: "Question 1",
                    options: [
                        { optionText: "Option 1" },
                        { optionText: "Option 2" },
                        { optionText: "Option 3" },
                        { optionText: "Option 4" }
                    ],
                    correctAnswer: ""
                }
            ],
            openUploadImagePop: false,
            imagePositionData: {
                question: null,
                option: null
            }
        };
    }
然后,
CloseIcon
不会呈现,状态也不会更新


课程状态如下:

<IconButton
   style={{
      marginLeft: "3px",
      marginTop: "-15px",
      zIndex: 999,
      backgroundColor: "lightgrey",
      color: "grey",
   }}
   size="small"
   onClick={() => {
      this.updateImageLink("", { question: i, option: null });
   }}
>
   <CloseIcon />
</IconButton>
this.state = {
            questions: [
                {
                    questionText: "Question 1",
                    questionImage:null,
                    options: [
                        { optionText: "Option 1",
                          optionImage: null },
                        { optionText: "Option 2",
                          optionImage: null },
                        { optionText: "Option 3",
                          optionImage: null },
                        { optionText: "Option 4",
                          optionImage: null }
                    ],
                    correctAnswer: ""
                }
            ],
            openUploadImagePop: false,
            imagePositionData: {
                question: null,
                option: null
            }
      }
this.state = {
            questions: [
                {
                    questionText: "Question 1",
                    options: [
                        { optionText: "Option 1" },
                        { optionText: "Option 2" },
                        { optionText: "Option 3" },
                        { optionText: "Option 4" }
                    ],
                    correctAnswer: ""
                }
            ],
            openUploadImagePop: false,
            imagePositionData: {
                question: null,
                option: null
            }
        };
    }

因此,如何仅在插入图像时渲染关闭图标?

我通过更新状态解决了这个问题,如下所示:

<IconButton
   style={{
      marginLeft: "3px",
      marginTop: "-15px",
      zIndex: 999,
      backgroundColor: "lightgrey",
      color: "grey",
   }}
   size="small"
   onClick={() => {
      this.updateImageLink("", { question: i, option: null });
   }}
>
   <CloseIcon />
</IconButton>
this.state = {
            questions: [
                {
                    questionText: "Question 1",
                    questionImage:null,
                    options: [
                        { optionText: "Option 1",
                          optionImage: null },
                        { optionText: "Option 2",
                          optionImage: null },
                        { optionText: "Option 3",
                          optionImage: null },
                        { optionText: "Option 4",
                          optionImage: null }
                    ],
                    correctAnswer: ""
                }
            ],
            openUploadImagePop: false,
            imagePositionData: {
                question: null,
                option: null
            }
      }
this.state = {
            questions: [
                {
                    questionText: "Question 1",
                    options: [
                        { optionText: "Option 1" },
                        { optionText: "Option 2" },
                        { optionText: "Option 3" },
                        { optionText: "Option 4" }
                    ],
                    correctAnswer: ""
                }
            ],
            openUploadImagePop: false,
            imagePositionData: {
                question: null,
                option: null
            }
        };
    }

由于没有
问题图像
选项图像
字段,因此不必要的
关闭图标
渲染问题得到解决。无论何时上传图像,都可以通过updateImageLink功能将图像添加到状态中。

您可以提供到repo的链接或将您的项目置于stackblitz上吗?