将道具和状态传递给子组件

时间:2020-06-18 18:43:36

标签: javascript reactjs state react-props

我正在尝试分解应用程序中的组件,但是在理解如何将状态和道具从父组件传递到子组件时遇到了一些麻烦。对于上下文,我的子组件是一个表,该表在行中呈现了一个较小的组件。

现在,我有一个名为BookComponents的常量,它接受一本书并写入状态。卡住的地方是将状态和道具传递到BookTable组件中,这样我就可以在书桌而不是主页中呈现书了。谢谢您的帮助和提示。

主页:

import React from 'react';
import type { User, BookType } from '/types';
import Book from './Book';
import BookTable from './BookTable';

type Props = {};

type State = {
  selectedUser: <User> | null,
  books: BookType[]
};

export default class BookPage extends React.PureComponent<Props, State> {
  const BookComponents = this.state.book.map((book) => <Book {...book} />);
  const selectedUser = this.state.selectedUser;

  return (
  <div>

    <div>
      Find Users and their Books
      <Selector
        input={{
          onChange: this.onSelect,
          value: selectedUser,
        }}
        getValue={(user) => user.full_name}
      />

      {selectedUser && (
      <Section>
        <H1>
          {selectedUser.full_name}'s Books
        </H1>
        {BookComponents}
        <BookTable/>
      </Section>)}
    </div>
  </div>
  )
}

BookTable代码:

import React from 'react';
import type { User } from '/types';

type Props = {};

type State = {};

export default class BookTable extends React.PureComponent<Props, State> {
  render() {
  return (
    <Section>
      <H1>
        Print User's books here
      </H1>
    </Section>
  );
 }
}

2 个答案:

答案 0 :(得分:2)

如果我正确理解您的意思,您只是想将状态传递给组件的道具,没有别的吗?

呈现在MainPage中:

<BookTable books={this.state.book} />

在BookTable中:

type Props = {
  books: BookType[]
};

export default class BookTable extends React.PureComponent<Props, State> {

  static defaultProps = {
    books: []
  }

  render() {
  return (
    <Section>
      <H1>
        {this.props.books.map((book) => <Book {...book} />)}
      </H1>
    </Section>
  );
 }
}

答案 1 :(得分:1)

尝试像这样将状态和道具从父组件传递到子组件。

在父组件中,将值传递给子组件。

<BookTable stateaData={this.state} propsData={this.props}/>

在子组件中,按以下方式获取上述道具。

this.props.stateaData
this.props.propsData