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

反应传递新道具

穆俊名
2023-03-14
this.state.newDetails == null ? '' : 
    <NewDetailsView details={this.state.newDetails} /> 
import React, { Component } from 'react';

class NewDetailsView extends Component {
  constructor(props) {
    super(props);
    this.state = {
      details: (this.props.details!= null) ? this.props.details: null
    }
  }

  componentWillReceiveProps(nextProps) {
    this.setState({ details: nextProps });
    this.forceUpdate();
  }

  render() {
    return (
      <div>
        <input type="text" defaultValue={this.state.details.id} />
      </div>
    );
  }
}

export default NewDetailsView ;

悬而未决...

共有1个答案

司徒英卓
2023-03-14

问题在ComponentWillReceiveProps中:

this.setState({ details: nextProps });

应该是:

this.setState({ details: nextProps.details });

并删除this.forceUpdate();,这里不需要forceUpdate

<input type="text" value={this.state.details.id} />
 类似资料:
  • 我在克服react路由器的问题时遇到困难。该场景是,我需要从状态父组件和路由向子路由传递一组道具 我想做的是传递its,传递its。然而,我能找到的唯一方法是通过这两个和,这意味着每个子路径都会获得每个子道具,无论其是否相关。目前这不是一个阻塞问题,但我可以看到,有一段时间我会使用同一组件的两个,这意味着propA上的键将被propB上的键覆盖。 这实际上是我所期望的方式。当我链接到我得到组件渲染

  • 我对在反应中传递道具有问题。这是我的文件夹结构: src > Button.js 容器 PageContainer.js 页 Page.js 我正在使用Bootstrap 4在Button.js中创建一个按钮: “类”按钮中没有其他内容。现在我在类PageContainer中添加了一个按钮: 如你所见,我给按钮传递了一个标题:后退和下一步。那工作正常。我现在可以添加一个网址,它会工作正常,但这不是

  • 我需要通过使用路由器的组件道具。这是我的代码: 如您所见,我验证了我要传递给登录组件的道具。 当我记录道具时,未经验证的道具不存在。我做错了什么?我怎样才能正确地通过道具?我跟踪了文档和其他讨论。据我所知,这应该是可行的。react router和react router dom的版本为4.0.0

  • 我在找到一种将道具传递给组件子组件的方法时遇到了一点麻烦。我想做的是有一个组件(ParentComponent)它有一个函数(toggleSuccess())来改变它自己的状态(例如一个名为成功的布尔值),并将该函数作为onClick道具传递给它的所有子函数。理想情况下,我可以将各种组件放入ParentComponent,它们都可以通过onClick道具访问toggleSuccess()。有没有一

  • 我在一个组件中有一个按钮,单击我想转到另一个组件并将状态传递给该组件。 是这样的: 但它不起作用。单击“我去添加新问题url”,但组件AddNewQuestionPage不会呈现。若我不把路线放在AddQuestions组件中,而是放在应用程序组件中,它就可以工作。它是整个应用程序的主要组件,使用Switch,还设置了其他路由。 但是,如果状态问题是从应用程序组件呈现的,我不知道如何将其传递给Ad