react-render之ifelse

这篇博客探讨了在React中处理条件渲染时遇到的问题。作者在尝试使用if...else语句根据菜单等级显示相关操作时遇到了错误,具体表现为在调用handleUpdate方法时出现找不到方法的错误。尽管该方法已定义,但可能由于if...else结构导致了this的指向问题。为了解决这个问题,作者改用了三元运算符进行条件判断,从而解决了错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

场景:根据菜单等级显示相关操作。

开始采用if…… else……方式,结果报错,代码如下:

render : (text, record) => (
	if (text != "c") {
		<span className="table-action">
			<AmdinChildrenMenuModal record={record} onOk={(record) =>this.handleAddChildrenMenu(record)} >
				<Button size="small">添加</Button>
			</AmdinChildrenMenuModal>
			<AmdinMenuModalEdit record={record} onOk={(record) =>this.handleUpdate(record)} >
				<Button size="small">编辑</Button>
			</AmdinMenuModalEdit>
			<Popconfirm title="确定要删除吗?" onConfirm={() => this.handleDelete(record)}>
				<Button size="small">删除</Button>
			</Popconfirm>
		</span>
	} else {
		<span className="table-action">
			<AmdinMenuModalEdit record={record} onOk={(record) =>this.handleUpdate(record)} >
				<Button size="small">编辑</Button>
			</AmdinMenuModalEdit>
			<Popconfirm title="确定要删除吗?" onConfirm={() => this.handleDelete(record)}>
				<Button size="small">删除</Button>
			</Popconfirm>
		</span>
	}
	
)

例如点击编辑时,报错说找不到handleUpdate方法。实际上该方法是有定义的,却说找不到,或许是if else导致了this无法指向handleUpdate方法。于是换成三元运算符的方式:

{
	key: 'grade',
	title : '操作',
	dataIndex: 'grade',
	
	render : (text, record) => (
		<span className="table-action">
			{text != "c" ? <AmdinChildrenMenuModal record={record} onOk={(record) =>this.handleAddChildrenMenu(record)}><Button size="small">添加</Button></AmdinChildrenMenuModal> : ""}
			<AmdinMenuModalEdit record={record} onOk={(record) =>this.handleUpdate(record)} >
				<Button size="small">编辑</Button>
			</AmdinMenuModalEdit>
			<Popconfirm title="确定要删除吗?" onConfirm={() => this.handleDelete(record)}>
				<Button size="small">删除</Button>
			</Popconfirm>
		</span>
	)
	
}
目前解决判断的办法就是这样了,希望大家可以就此问题进行交流。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值