这有点难说,因为ClickableRenderer类似乎用于渲染表中的每个单元格(或其中一些单元格)。
this.props.value
复制到
this.state.cell.row
,并且可能是
this.state.listapproval.contracts
,但我认为还传递了其他道具,但该组件没有记录需要哪些道具。你可以
console.log(this.props)
开始时
render()
提供更好的想法,或者查看JSX
ClickableRenderer
实例化以查看传递的内容。
据我所知,这里有一个替代方案
render()
那可能是你想要的。
render() {
let roleslist = this.state.userroleslist.user.role.permission || {};
let userroleslistname = this.state.userroleslist.user.role.name;
let contracts = this.state.listapproval.contracts;
return (
<div>
{
roleslist.map((roles) => {
if (roles.moduleName == "Contracts" && roles.permissionName == "Read") {
return (
<Link to="/previewContract" title="preview" className=" mr-2" onClick={this._getSingleContract}>
<i className="fa fa-eye"></i>
</Link>
)
}
);
if (contracts[this.props.value].status === 1) {
<a
className="mr-2"
title="Approve"
onClick={this._approveContract}
>
<i className="fa fa-thumbs-up"></i>
</a>
<a
type='button'
title="Reject"
className="mr-2"
onClick={this._openrejectDialog.bind(this)}
>
<i className="fa fa-ban"></i>
</a>
}
}
</div>
);
}
你似乎没有一个
_approveContract
因此,您需要决定如何处理这一问题。
我觉得你的代码实现得很模糊。你可以考虑添加
PropTypes
因为这有助于记录和验证传递的道具。
投入的大部分
this.state
似乎没有必要。阅读无状态组件,了解如何简化。