React Table数据逻辑构造

问题描述

我想问一下是否有更简单的方法显示数据。 这是我的虚拟数据:

const data = [
  {
    business: false,utilization: {
      ActiveParticipantsPercent: 55.55,SeparatedVestedParticipants: 0,ParticipantsWithBenefitaccount: 8,AverageActiveParticipants: 5,TotalContributions: 23890
    },year: 2018
  },{
    business: true,utilization: {
      ActiveParticipantsPercent: 82.4,SeparatedVestedParticipants: 1.94,ParticipantsWithBenefitaccount: 95393,AverageActiveParticipants: 0.01,TotalContributions: 257094.79
    },year: 2018
  }
];

我想在2列中显示数据-一个是具有错误业务价值的2018年,另一个是具有真实业务价值的2018年。 我想为每个人显示利用率字段的数据。

我准备了沙箱以查看其工作方式,但我认为可能有更简便的方法来节省资源:https://codesandbox.io/s/immutable-worker-ixf6r?file=/src/App.js

有什么建议还是应该以这种方式保留?

解决方法

您可以在########### #CONSTANTS# ########### DIGITS = "123456789" ######## #ERRORS# ######## class Error: def __init__(self,pos_start,pos_end,error_name,details): self.pos_start = pos_start self.pos_end = pos_end self.error_name = error_name self.details = details def as_string(self): result = f'{self.error_name}: {self.details}' result += f'File {self.pos_star.fn},line {self.pos_start.ln + 1}' return result class IllegalCharError(Error): def __init__(self,details): super().__init__(pos_start,"Sorry,dude,but we don't support that character you typed :( ",details) ########## #POSITION# ########## class Position: def __init__(self,idx,ln,col,fn,ftxt): self.idx = idx self.ln = ln self.col = col self.fn = fn self.ftxt = ftxt def advance(self,current_char): self.idx += 1 self.col += 1 if current_char == "\n": self.ln += 1 self.col = 0 return self def copy(self): return Position(self.idx,self.ln,self.col,self.fn,self.ftxt) ######## #TOKENS# ######## TT_INT = "TT_INT" TT_FLOAT = "FLOAT" TT_PLUS = "PLUS" TT_MINUS = "MINUS" TT_MUL = "MUL" TT_DIV = "DIV" TT_LPAREN = "LPAREN" TT_RPAREN = "RPAREN" class Token: def __init__(self,type_,value=None): self.type = type_ self.value = value def __repr__(self): if self.value: return f'{self.type}:{self.value}' return f'{self.type}' ####### #LEXER# ####### class Lexer: def __init__(self,text): self.fn = fn self.text = text self.pos = Position(-1,-1,text) self.current_char = None self.advance() def advance(self): self.pos.advance(self.current_char) self.current_char = self.text[self.pos.idx] if self.pos.idx < len(self.text) else None def make_tokens(self): tokens = [] while self.current_char != None: if self.current_char in ' \t': self.advance() elif self.current_char in DIGITS: tokens.append(self.make_number()) elif self.current_char == "+": tokens.append(Token(TT_PLUS)) self.advance() elif self.current_char == "-": tokens.append(Token(TT_MINUS)) self.advance() elif self.current_char == "*": tokens.append(Token(TT_MUL)) self.advance() elif self.current_char == "/": tokens.append(Token(TT_DIV)) self.advance() elif self.current_char == "(": tokens.append(Token(TT_LPAREN)) self.advance() elif self.current_char == ")": tokens.append(Token(TT_RPAREN)) self.advance() else: self.pos.copy() char = self.current_char self.advance() return [],IllegalCharError(pos_start,self.pos,"'" + char +"'") return tokens,None def make_number(self): num_str = "" dot_count = 0 while self.current_char != None and self.current_char in DIGITS + ".": if self.current_char == ".": if dot_count == 1: break dot_count += 1 num_str += "." else: num_str += self.current_char self.advance() if dot_count == 0: return Token(TT_INT,int(num_str)) else: return Token(TT_FLOAT,float(num_str)) ##### #RUN# ##### def run(fn,text): lexer = Lexer(fn,text) tokens,error = lexer.make_tokens() return tokens,error 对象(行)和行内部进行迭代,在数据数组(单元格)之间进行迭代,而不是对每个utilization进行硬编码然后在其中进行迭代>

示例:

TableRow

Edit React MUI Table By Rows