【发布时间】:2020-07-16 02:41:34
【问题描述】:
我正在尝试将数组 accessRoleDisplay 初始化为未知数量的值,并为数组中的每个项目指定一个键“名称”,以便我可以使用反应表并将值添加到 accessor
所以它看起来像这样
0: {name:xyz} 1: {name:xyz} 2: {name:xyz} 。 . .等等
这是我的方法accessRoleDisplay:[{name:''}],但这只是将第一项设置为名称键,其余项不设置。任何反馈表示赞赏!
class MainCard extends Component {
state = {
accessRoleDisplay:[{name:''}],
}
handleChange = (tab) => {
window.alert(`Tab changed to: ${tab}`);
};
retrieveRoleAccess() {
for (let i = 0; i < this.state.accessRoleData.length; i++) {
for(let j=0; j<this.state.resourcesResponseData.length; j++) {
if(this.state.accessRoleData[i].resource_id === this.state.resourcesResponseData[j].id)
{
this.setState((prevState) => ({
accessRoleDisplay: [...prevState.accessRoleDisplay, this.state.resourcesResponseData[j].name]
}));
}
}
}
console.log('this is role access display: ',this.state.accessRoleDisplay )
}
async componentDidMount() {
this.retrieveRoleAccess();
...
}
shouldComponentUpdate(nextProps, nextState) {
return nextState !== this.state;
}
render() {
if (this.props.cardHandle) {
return null
}
else {
if (this.props.sendOptionSelected === 'Role') {
return (
<Card mr={'0px'}>
<Tabs defaultActiveTab="Members" onChange={this.handleChange} >
{/* Group of tabs */}
<Tabs.Tab label="Members">Members</Tabs.Tab>
<Tabs.Tab label="Access">Access</Tabs.Tab>
{/* Tab panels */}
<Tabs.Panel label="Members">
<Table
data={Array.isArray(this.state.outputRoleMembers) ? this.state.outputRoleMembers : [this.state.outputRoleMembers]}
defaultPageSize={[this.state.outputRoleMembers].length}
columns={
[
{
Header: 'Fisrt Name',
accessor: 'first_name'
},
{
Header: 'Last Name',
accessor: 'last_name'
}
]
}
sortable={false}
resizable={false}
showPagination={false}
onSortedChange={() => { }}
/>
</Tabs.Panel>
<Tabs.Panel label="Access">
<Table
data={Array.isArray(this.state.accessRoleDisplay) ? this.state.accessRoleDisplay : [this.state.accessRoleDisplay]}
defaultPageSize={this.state.accessRoleDisplay.length}
columns={
[
{
Header: 'Resource Name',
//accessor: Need a key value here
}
]
}
sortable={false}
resizable={false}
showPagination={false}
onSortedChange={() => { }}
/>
</Tabs.Panel>
</Tabs>
</Card>
)
}
}}}
const mapStateToProps = state => {
return {
roles: state.roles.item,
users: state.users,
permissions: state.permissions,
resources: state.resources
}
}
export default connect(mapStateToProps, { getComponentById, fetchComponent })(MainCard);
【问题讨论】:
-
虽然这不是一个很好的做法,因为您的数组中没有其他唯一值,您可以使用数组的索引作为您的键。但请注意,它有时可能会给您带来一些错误
-
@NikhilAdiga 感谢您的反馈,我希望将每个值附加到键“名称”而不是使用索引。你知道这样做的方法吗