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