当前位置: 首页 > 知识库问答 >
问题:

传递道具和状态到子组件

蔚和安
2023-03-14

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

现在我有一个名为BookComponents的常量,它需要一本书并写入状态。我被卡住的地方是传递状态和道具到我的书桌组件,这样我就可以在书桌上呈现书籍,而不是在主页上。

主页:

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>
  )
}

书桌代码:

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个答案

鱼志学
2023-03-14

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

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

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

在子组件中,如下获取上述道具。

this.props.stateaData
this.props.propsData 
谭兴学
2023-03-14

若我理解正确的话,你们只想把状态传递给组件的道具,别的什么都不想?

在主页的呈现中:

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

在BookTable中:

js prettyprint-override">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>
  );
 }
}

 类似资料:
  • 我正在呈现一个自定义模态组件,该组件基于从父组件传入的道具来显示。道具最初为,然后通过按钮在父组件中更新。我正在通过render函数中的语句检查组件状态。当组件首次初始化时,它会像预期的那样记录,但当isVisible更新时,它会返回。为什么状态不随道具更新? 我知道这可能是非常基本的组件生命周期的东西,但我无法从文档中找到它,而且我是一个相当新的反应者。

  • 我实际上正在学习reactjs,并且实际上正在开发一个小的TODO列表,包装在一个名为TODO的“父组件”中。 我决定将初始化移到componentDidMount内部,但这似乎是一个反模式,我需要另一个解决方案。你能帮我吗? 下面是我的实际代码:

  • 我无法将状态从父组件转发到子组件,这两个组件是类组件。将状态从父组件转发到子组件时,我希望在子组件中使用状态showModal变量作为状态变量show as: 这个变量被用来激活模态。当我将其用作this.props.show时,状态已被转发到子组件并进行更新,但当我在子组件中this.state中使用道具时,状态尚未更新。有人知道问题出在哪里吗? 第一父组件: 第二子组件:

  • 我是反应的新手,尝试将一个值从父组件传递给子组件到props并将值存储在状态中。但它甚至不调用console.log语句 这是我的函数通过单击按钮来更改字符串 在父组件中,在渲染中我有这个: 子组件 从“React”导入React;将*作为样式从“”导入/编辑单元css’; 我的目标是,根据通过单击按钮更改的状态,显示div或不显示div。

  • 我是新手,基本上我正在尝试立即更新父组件的状态及其子组件(和)道具。当前仅更新父组件的状态。我会一步一步地解释清楚。 这里我有一个父组件 这个组件有两个对象数组(和),分别作为道具发送到和组件。接收selectedPlayer和setSseltedPlayer。两个组件都有一个组件和一个选择输入。在组件中,用户将选择一个团队,他们将显示所选团队的球员,而在组件中,将选择一个球员,他们将显示选中的玩

  • 对于Eample: 我在谷歌上搜索了这个问题,我发现我找到的答案已经过时了 关于StackOVerflow的几个问题 reactJS:为什么将组件初始状态传递为prop是反模式? reactJS:如何在呈现组件时传递初始状态? 但是我在React博客中发现了这个帖子:React v0.13.0 Beta 1 在这篇文章中,author做了我想做的事情,据我所知,现在是不推荐的。 所以问题是:通过道