javascript - 使用 React 过滤列表

标签 javascript arrays reactjs filtering

嗯,我没有看到我的遗漏,但我得到一个空白页面,控制台错误说:

Users.js:9 Uncaught TypeError: Cannot read property 'filter' of undefined
    at Users.render (Users.js:9)

显然我没有正确使用“filter()”。我环顾四周,但没有发现任何与“ react ”相关的东西。有人可以帮忙吗?以下是文件:

<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>React App</title>
  </head>
  <body>
    <div id="root"></div>
  </body>
</html>

索引.js

import React from 'react';
import ReactDOM from 'react-dom';
import Users from './Users';

ReactDOM.render(
  <Users list={[
    { name: 'Tyler', friend: true },
    { name: 'Ryan', friend: true },
    { name: 'Michael', friend: false },
    { name: 'Mikenzie', friend: false },
    { name: 'Jessica', friend: true },
    { name: 'Dan', friend: false }
    ]}
  />,
  document.getElementById('root')
);

用户.js

import React from 'react';

class Users extends React.Component {
  render() {
    return (
      <div>
        <h1>Friends:</h1>
        <ul>
          {this.props.list.friend.filter(function (friend) {
            return <li>{friend[0] === 'true'}</li>
        })}
        </ul>

        <hr />

        <h1>Non Friends:</h1>
        <ul>
          {this.props.list.friend.filter(function (nonFriend) {
            return <li>{nonFriend[0] === 'false'}</li>
          })}
        </ul>
      </div>
    );
  }
}

export default Users;

最佳答案

好的,看起来“Users.js”应该是:

import React from 'react';

class Users extends React.Component {
  render() {
    let friends = this.props.list.filter( function (user) {
      return user.friend === true
    });

    let nonFriends = this.props.list.filter( function (user) {
      return user.friend !== true
    });

    return (
      <div>
        <h1>Friends:</h1>
        <ul>
          {friends.map(function (user) {
            return <li key={user.name}>{user.name}</li>
          })}
        </ul>
        <h1>Non Friends:</h1>
        <ul>
          {nonFriends.map(function (user) {
            return <li key={user.name}>{user.name}</li>
          })}
        </ul>
      </div>
    );
  }
}

export default Users;

甚至这样:

import React from 'react';

class Users extends React.Component {
  render() {
    return (
      <div>
        <h1>Friends:</h1>
        <ul>
          {this.props.list.filter(function (user) { // filter first for friends
            return user.friend === true // returns a new array
          }).map(function (user) {  // map the new array to list items
            return <li key={user.name}>{user.name}</li> // don't forget unique key for each item
          })}
        </ul>

        <hr />

        <h1>Non Friends:</h1>
        <ul>
          {this.props.list.filter(function (user) { // filter first for non-friends
            return user.friend !== true // returns a new array
          }).map(function (user) {  //map the new array to list items
            return <li key={user.name}>{user.name}</li> // don't forget unique key for each item
          })}
        </ul>
      </div>
    );
  }
}

export default Users;

关于javascript - 使用 React 过滤列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43643877/

相关文章:

javascript - 如何将一个数组中的首字母与另一个数组中的值匹配?

c - 将多个字符串数组合并为一个

javascript - .jsx 和 .js 文件之间的技术区别是什么

javascript - 我需要在 Javascript 闭包中指定参数吗

javascript - 如何从 JavaScript 设置过渡,同时仍然从 CSS 继承样式

javascript - 为什么 Chrome 的 JS 控制台返回 DOM 元素而不是 jQuery 对象?

javascript - 尝试更改颜色,但不确定如何从 JavaScript 更改 div 元素

javascript - "push()"方法返回数组而不是数组的长度(JavaScript)

css - 具有两个嵌套 View 的 react-native flexbox space-between

javascript - .bind() 与箭头函数 () => 在 React 中的用法的区别