Reactjs React-TypeScript条件呈现在prop函数中保留类型保护
我有条件地呈现一个按钮。但是,在第7行,exportExcel函数的第一个参数是同一个变量,该变量必须为非Nil,按钮才能均匀渲染,但TS在第7行表示,Reactjs React-TypeScript条件呈现在prop函数中保留类型保护,reactjs,typescript,Reactjs,Typescript,我有条件地呈现一个按钮。但是,在第7行,exportExcel函数的第一个参数是同一个变量,该变量必须为非Nil,按钮才能均匀渲染,但TS在第7行表示,“数据”可能为空。我觉得TS应该知道它不是基于条件呈现的Nil,但我也知道内联函数是一个新的作用域 我找到的唯一解决方案是可选链接和作为任何[]。(exportExcel的第一个参数是任意[]) 如何使TS错误正确消失 onClick={()=>exportExcel(数据?.productsByType?.products作为任何[],“程序数
“数据”可能为空。我觉得TS应该知道它不是基于条件呈现的Nil,但我也知道内联函数是一个新的作用域
我找到的唯一解决方案是可选链接和作为任何[]
。(exportExcel的第一个参数是任意[])
如何使TS错误正确消失
onClick={()=>exportExcel(数据?.productsByType?.products作为任何[],“程序数据”)}
1。{data.productsByType.products&&(
2.导出Excel(data.productsByType.products,“程序数据”)}
8. >
9.下载CSV
10
11. )}
当您进行调用时,这是在回调内部发生的。此回调将在将来的某个时候调用,TypeScript不能假设在声明回调和用户单击按钮时调用回调之间,data.productsByType
对象没有更改
如果希望避免这种情况,可以将该值保存为常量,然后在JSX代码中使用它
const products=data.productsByType.products;
{products&&(
exportExcel(产品,“程序数据”)}
>下载CSV
)}
这里没有问题。你能不能更新一下,弄清楚你在问什么?
1. {data.productsByType.products && (
2. <Button
3. color="primary"
4. variant="contained"
5. className="actionButton"
6. style={{ marginBottom: 15 }}
7. onClick={() => exportExcel(data.productsByType.products, "program-data")}
8. >
9. Download CSV
10. </Button>
11. )}