简体   繁体   English

无法将道具传递给组件

[英]Unable to pass Props to component

Using Material UI, Table Component . 使用Material UI,表格组件 All that has been imported in the Root component. 所有已导入到根组件中。 The problem I'm running into is passing properties to the child component <UserList /> . 我遇到的问题是将属性传递给子组件<UserList /> I can pass users but that's it. 我可以通过users ,仅此而已。

My error is props are undefined , which means I'm not passing anything to the child, but how can I pass users but not showCheckboxes ? 我的错误是props are undefined ,这意味着我没有将任何东西传递给孩子,但是如何传递用户而不是showCheckboxes呢? What am I missing here? 我在这里想念什么?

User container 用户容器

import React, { Component } from 'react';
import ReactDOM from 'react-dom';

import { fetchUsers } from '../actions/usersActions';
import UsersList from '../components/users/UsersList';

export default class Users extends Component {
  componentDidMount(){
    this.props.dispatch(fetchUsers(''));
  }
  render(){
    const showCheckboxes = 'false';
    return(
      <div>
        <UsersList users={this.props.users} showCheckboxes={showCheckboxes}/>
      </div>
    );
  }
}

Userslist Userslist

import React from 'react';
import {Table, TableBody, TableFooter, TableHeader, TableHeaderColumn, TableRow, TableRowColumn} from 'material-ui/Table';

export default function UsersList({ users }, props) {
  const emptyMessage = (
    <p>There are no users</p>
  );
  const usersList = users.map( user =>
    <li key={user.id}>{user.name}</li>
  );

  return (
    <div>
      <Table>
        <TableHeader displaySelectAll={this.props.showCheckboxes}>
          <TableRow>
            <TableHeaderColumn>ID</TableHeaderColumn>
          </TableRow>
        </TableHeader>
      </Table>
      {users.length === 0 ? emptyMessage : usersList}
    </div>
  );
}

As official docs say: 正如官方文档所说:

This function is a valid React component because it accepts a single "props" object argument with data and returns a React element. 该函数是有效的React组件,因为它接受带有数据的单个 “ props”对象参数并返回React元素。

So your component should look like this: 因此,您的组件应如下所示:

import React from 'react';
import {Table, TableBody, TableFooter, TableHeader, TableHeaderColumn, TableRow, TableRowColumn} from 'material-ui/Table';

export default function UsersList(props) {
  const emptyMessage = (
    <p>There are no users</p>
  );
  const usersList = props.users.map( user =>
    <li key={user.id}>{user.name}</li>
  );

  return (
    <div>
      <Table>
        <TableHeader showCheckboxes={props.showCheckboxes}>
          <TableRow>
            <TableHeaderColumn>ID</TableHeaderColumn>
          </TableRow>
        </TableHeader>
      </Table>
      {props.users.length === 0 ? emptyMessage : usersList}
    </div>
  );
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM