代码之家  ›  专栏  ›  技术社区  ›  BADRUM

如何将道具传递的值映射并保存到LoggBockRowList类中的LoggBockRowItem数组中?

  •  0
  • BADRUM  · 技术社区  · 1 年前
    class LoggBockRowList extends Component{
        state ={
            loggbocks: [null],
        }
    
        handleloggbocks = () => {
            this.setState({loggbocks: [this.props.loggbocks.map(loggbock =>
                <LoggBockRowItem
                    key={loggbock.key}
                    id={loggbock.id}
                    datum={loggbock.datum}
                    tid={loggbock.tid}
                    skift={loggbock.skift}
                    anläggningsdel={loggbock.anläggningsdel}
                    orsak={loggbock.orsak}
                    driftstatus={loggbock.driftstatus}
                    beskrivning={loggbock.beskrivning}
                    plats={loggbock.plats}
                    rapporterare={loggbock.rapporterare}
                />)]
            })   
        }
    
        render(){
          this.handleloggbocks();
          return <ul>{this.loggbocks}</ul>
        }
    }
    

    我试图将props给出的值保存到一个数组中 <LoggBockRowItem /> 在我的 LoggBockRowList 类,同时还返回要渲染的数组

    0 回复  |  直到 1 年前
        1
  •  0
  •   CodeThing    1 年前

    您不需要将整个组件存储在状态中。您只需将对象保存到状态中,然后使用该状态来渲染jsx。

    此外,如果你想将道具保存到可以使用的状态 static getDerivedStateFromProps 方法

    class LoggBockRowList extends Component {
      constructor(props) {
        super(props);
        this.state = {
          loggbocks: null
        };
      }
    
      static getDerivedStateFromProps(props, state) {
        return {
          loggbocks: props.loggbocks
        };
      }
    
      render() {
        return (
          <ul>
            {this.state.loggbocks &&
              this.state.loggbocks.map((loggbock) => (
                <LoggBockRowItem
                  key={loggbock.key}
                  id={loggbock.id}
                  datum={loggbock.datum}
                  tid={loggbock.tid}
                  skift={loggbock.skift}
                  anläggningsdel={loggbock.anläggningsdel}
                  orsak={loggbock.orsak}
                  driftstatus={loggbock.driftstatus}
                  beskrivning={loggbock.beskrivning}
                  plats={loggbock.plats}
                  rapporterare={loggbock.rapporterare}
                />
              ))}
          </ul>
        );
      }
    }