1

react-window用来尝试生成一个列表。

使用他们使用的默认行,他们创建

const Row = ({ index, style }) => (
    <div className={index % 2 ? 'ListItemOdd' : 'ListItemEven'} style={style}>
        Row {index}
    </div>
);

然后他们使用默认元素像这样创建列表

  <List
    className="List"
    height={150}
    itemCount={1000}
    itemSize={35}
    width={300}
  >
    {Row}
  </List>

返回的也是一个对象,形成方式与我的相同 元素的控制台输出

我正在尝试做大致相同的事情。

我正在使用列表组件

<List
      className="List"
      height={150}
      itemCount={20}
      itemSize={35}
      width={300}>
            {renderUsers(users)}
</List>

哪里renderUsers(users)输出const renderUsers = map((user) => <User user={user} key={user.__id} />);

我收到一条错误消息

Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object.

Check the render method of `List`.

返回的是一个看起来像这样的对象(问题?) 控制台输出的图像

我该如何解决这个问题?

4

1 回答 1

4

您需要将组件作为子组件传递List,而不是元素列表。

const Row = ({ data, index, style }) => {
      const user = data.users[index];
        return (
          <div style={style}>
            <User user={user} key={user.__id} />
          </div>
       )
     };

<List
      className="List"
      height={150}
      itemCount={users.length}
      itemSize={35}
      itemData={{
         users,
      }}
      width={300}>
      {Row}
</List>
于 2021-01-19T15:44:36.210 回答