React中Uncaught TypeError: setRender is not a function报错求助
问题分析与解决方案
首先,你遇到的Uncaught TypeError: setRender is not a function报错,大概率是父组件没有正确给ListAllRequests传递setRender props,或者传递的值不是函数(比如传了undefined、null等非函数类型)。先检查父组件的传参逻辑,确保setRender是有效的React状态更新函数(比如useState返回的setter)。
以下是除当前写法外,在onClick事件中使用props传入的setRender的几种方式:
柯里化函数:提前定义接收
requestId的函数,返回点击事件处理器const handleRowClick = (requestId) => () => { setRender(requestId); }; // 在TableRow中使用 <TableRow className={classes.tr} onClick={handleRowClick(request._id)} key={request._id} >使用
bind绑定参数:利用Function.prototype.bind把request._id绑定到setRender上<TableRow className={classes.tr} onClick={setRender.bind(null, request._id)} key={request._id} >这里第一个参数传
null是因为React状态setter不需要改变this指向。抽取独立点击处理函数:把逻辑抽到组件内部函数中,点击时传入对应
requestconst handleRowClick = (request) => { setRender(request._id); // 后续可扩展其他逻辑,比如日志、额外状态更新等 }; // 在map中使用 <TableRow className={classes.tr} onClick={() => handleRowClick(request)} key={request._id} >
需要注意:所有写法的前提都是确保setRender已被正确传入组件,否则仍会触发相同报错。
内容的提问来源于stack exchange,提问作者Hayaz
相关产品推荐
相关产品推荐

