React - ref 的当前函数在 if 语句上失败
React - ref's current function fails on if statement
我在使用 React createRef 时遇到了一个非常奇怪的问题
我调用了一个 ref,它只在 if/else 语句的 else 分支中起作用。
如果我去掉if语句,ref就不起作用,如果函数转到IF路径,它也不起作用。
这是一个片段。
sendFetch("/api/cases?q=" + JSON.stringify(query_payload), "", "GET").then(
data => {
this.fetchedData = data;
console.log(data.count + " results found")
//populate the table with results
if (data.count === "0" || data.status === "failed") {
console.log("NOT FOUND")
this.tableRef.current.loadTablewithNewData(false)
//NOT WORKING
} else {
//reload the table component with the new data
this.tableRef.current.loadTablewithNewData(data.context)
//WORKING
}
}
)
当遵循 IF 路径时,或者我一起删除 if/else 并立即调用 ref 函数时,REACT 显示此错误
×
未处理的拒绝 (TypeError):无法读取 属性 'loadTablewithNewData' of null
当您发出请求时,您是否检查过添加了 ref 的元素是否确实存在于 DOM 中?
Unhandled Rejection (TypeError): Cannot read property 'loadTablewithNewData' of null
仅当您尝试访问该元素时 DOM 中不存在该元素时才会出现此错误。
您在此处发布的代码按预期工作。在尝试直接在 DOM
中操作元素之前,检查该元素是否存在
if(this.tableRef.current){ // It would be null if it doesn't exist
if (data.count === "0" || data.status === "failed") {
console.log("NOT FOUND")
this.tableRef.current.loadTablewithNewData(false)
} else {
//reload the table component with the new data
this.tableRef.current.loadTablewithNewData(data.context)
}
} else {
console.log('Table not present in the DOM')
}
找到了。
它发生的原因似乎是因为我渲染组件的方式。
我有一个条件语句,它在我第一次加载页面时呈现不同的组件。 else 语句有效,因为只有在第一次未加载页面时才会遵循 else 路径。
所以发生的事情是 if 路径将尝试为尚未呈现的 DOM 调用 ref。
我在使用 React createRef 时遇到了一个非常奇怪的问题
我调用了一个 ref,它只在 if/else 语句的 else 分支中起作用。
如果我去掉if语句,ref就不起作用,如果函数转到IF路径,它也不起作用。
这是一个片段。
sendFetch("/api/cases?q=" + JSON.stringify(query_payload), "", "GET").then(
data => {
this.fetchedData = data;
console.log(data.count + " results found")
//populate the table with results
if (data.count === "0" || data.status === "failed") {
console.log("NOT FOUND")
this.tableRef.current.loadTablewithNewData(false)
//NOT WORKING
} else {
//reload the table component with the new data
this.tableRef.current.loadTablewithNewData(data.context)
//WORKING
}
}
)
当遵循 IF 路径时,或者我一起删除 if/else 并立即调用 ref 函数时,REACT 显示此错误 × 未处理的拒绝 (TypeError):无法读取 属性 'loadTablewithNewData' of null
当您发出请求时,您是否检查过添加了 ref 的元素是否确实存在于 DOM 中?
Unhandled Rejection (TypeError): Cannot read property 'loadTablewithNewData' of null
仅当您尝试访问该元素时 DOM 中不存在该元素时才会出现此错误。 您在此处发布的代码按预期工作。在尝试直接在 DOM
中操作元素之前,检查该元素是否存在if(this.tableRef.current){ // It would be null if it doesn't exist
if (data.count === "0" || data.status === "failed") {
console.log("NOT FOUND")
this.tableRef.current.loadTablewithNewData(false)
} else {
//reload the table component with the new data
this.tableRef.current.loadTablewithNewData(data.context)
}
} else {
console.log('Table not present in the DOM')
}
找到了。
它发生的原因似乎是因为我渲染组件的方式。 我有一个条件语句,它在我第一次加载页面时呈现不同的组件。 else 语句有效,因为只有在第一次未加载页面时才会遵循 else 路径。
所以发生的事情是 if 路径将尝试为尚未呈现的 DOM 调用 ref。