我正在尝试使用 useEffect' 来更改 window。我没有收到任何错误,但它不起作用。怎么了?如何让它发挥作用?
I'm trying to use useEffect' for changing window. I do not get any error, but it doesn't work. What is wrong? How to make it work?
通过 dropzone,我正在上传或删除文件。
我想要做的是根据已删除的文件类型打开一个新的 window 类型。
为此,我尝试使用 useEffect 挂钩。但它不会产生任何错误并且不起作用:
const [win, setWin] = useState("A-Type");
let accepted_file = acceptedFiles[0];
useEffect(() => {
function handleSecondWindowType () {
if (accepted_file.type.includes('image/')) {
setWin("A-Type")
}
else {
setWin("B-Type");
}
}
},[accepted_file]);
您似乎创建了一个内部函数,但忘记调用它。你必须调用它,否则什么都不会发生:
useEffect(() => {
// call it
handleSecondWindowType();
function handleSecondWindowType () {
if (accepted_file.type.includes('image/')) {
setWin("A-Type")
}
else {
setWin("B-Type");
}
}
},[accepted_file]);
你可以像tmhao2005说的那样调用,或者去掉额外的函数声明即可
useEffect(() => {
if (accepted_file.type.includes('image/')) {
setWin("A-Type")
}
else {
setWin("B-Type");
}
}, [accepted_file]);
另一种可能是这样的:
function handleSecondWindowType() {
if (accepted_file.type.includes('image/')) {
setWin("A-Type")
}
else {
setWin("B-Type");
}
}
useEffect(handleSecondWindowType, [accepted_file]);
通过 dropzone,我正在上传或删除文件。 我想要做的是根据已删除的文件类型打开一个新的 window 类型。 为此,我尝试使用 useEffect 挂钩。但它不会产生任何错误并且不起作用:
const [win, setWin] = useState("A-Type");
let accepted_file = acceptedFiles[0];
useEffect(() => {
function handleSecondWindowType () {
if (accepted_file.type.includes('image/')) {
setWin("A-Type")
}
else {
setWin("B-Type");
}
}
},[accepted_file]);
您似乎创建了一个内部函数,但忘记调用它。你必须调用它,否则什么都不会发生:
useEffect(() => {
// call it
handleSecondWindowType();
function handleSecondWindowType () {
if (accepted_file.type.includes('image/')) {
setWin("A-Type")
}
else {
setWin("B-Type");
}
}
},[accepted_file]);
你可以像tmhao2005说的那样调用,或者去掉额外的函数声明即可
useEffect(() => {
if (accepted_file.type.includes('image/')) {
setWin("A-Type")
}
else {
setWin("B-Type");
}
}, [accepted_file]);
另一种可能是这样的:
function handleSecondWindowType() {
if (accepted_file.type.includes('image/')) {
setWin("A-Type")
}
else {
setWin("B-Type");
}
}
useEffect(handleSecondWindowType, [accepted_file]);