React - 预填充表单

2024-01-02

我需要预先填充一个表单,以便用户可以编辑他们之前创建的博客。我正在寻找在 React 中执行此操作的最佳实践方法。我目前正在通过 props 将值传递给组件,然后将状态属性设置为等于 props 属性,但我读到这是一种反模式。我理解“真理之源”。但更好的方法是什么?我暂时不想使用 redux-form。下面是我的标题组件,下面是我从父级调用它的方式。这一切都有效,但是有没有更好的方法,以避免将 state 属性设置为 props 属性?

import React, { Component, PropTypes} from 'react';

export default class DocumentTitle extends Component{
  constructor(props) {
      super(props);
      this.state = {inputVal:this.props.publication.document_title}
      this.handleChange = this.handleChange.bind(this)
  }

  handleChange(event) {
    this.setState({inputVal: event.target.value});
  }

  componentWillReceiveProps(nextProps){
    this.setState({inputVal: nextProps.publication.document_title})
  }

  render (){
    return (
      <div >
        <label>Title</label>
        <div>
          <input onChange={this.handleChange} id="doc_title" type="text" value={this.state.inputVal}/>
        </div>
      </div>
    )    
  }
}

家长来电:

 <DocumentTitle publication={this.props.publication} />

如果发布在父级中维护,则无需维护状态,除非有其他原因:其中之一是验证。

输入可能是不受控制的组件。输入的 onBlur 可用于更新父级。

<input 
  onBlur={e => this.props.onTitleChange(e.target.value)}
  id="doc_title" 
  type="text" 
  defaultValue={this.props.publication.document_title} />

父组件应该更新发布状态。

<DocumentTitle 
  publication={this.state.publication} 
  onTitleChange={this.handleTitleChange} />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React - 预填充表单 的相关文章

随机推荐

  • JQuery Mobile 用户滚动到底部

    使用以下代码 我试图找到用户何时滚动到页面底部 在 JQuery 移动版中 window scroll function if window scrollTop document height window height alert The
  • Android——隐藏视图

    好吧 我环顾四周 我明白了你应该如何做 但对我来说 这是行不通的 我需要能够在 XML 和代码中设置relativelayout 的 alpha 对于我的 XML 我有以下内容
  • 转换为灰度是图像预处理中的必要步骤吗?

    我想知道将图像转换为灰度是否是所有图像预处理技术的必要步骤 我正在使用神经网络进行人脸识别 是否真的有必要将其转换为灰度 或者我可以将彩色图像也作为神经网络的输入吗 转换为灰度对于图像处理来说并不是必需的 但通常出于以下几个原因进行转换 简
  • setTimeout 函数以错误的顺序运行[重复]

    这个问题在这里已经有答案了 当我按顺序执行下面三行时 它们按顺序输出3 1 2 如果订单不是3 2 1 因为第一条线的延迟比第二条线长 1ms vs 0ms setTimeout gt console log 1 1 setTimeout
  • EXCEL 多位异或

    我有两个单元格 其中包含一串位 0111010 和 0101011 我想将两者异或在一起 以便得到的单元格为 0010001 我知道你可以用它来表示布尔值 OR AND A1 NOT A2 AND A2 NOT A1 但它不适用于一串位 您
  • 为什么c++中没有多方法? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我读了很多关于如何在 C 中实现多方
  • 如何在 iOS 中的共享首选项中保存 cookie?

    如何在 iOS 中的共享首选项中保存 cookie 以及以后如何提取它 我想保存 cookieHTTPCookieStorage shared cookies进入用户默认值 然后提取 请用 Swift 3 回答 试试这个代码 Store f
  • 如何使用 Google 地图搜索我自己的位置数据(与地点搜索 API 功能相同,但针对我自己的“地点”)

    查看相关问题 谷歌地图自定义本地搜索 搜索控件 https stackoverflow com questions 3386841 google maps custom local search search control 我知道我可以创
  • 为什么大括号初始化器的自动类型推导和模板类型推导不同?

    我明白 给定一个支撑初始化器 auto将推导出一个类型std initializer list 而模板类型推导将会失败 auto var 1 2 3 type deduced as std initializer list
  • 自定义适配器中的位置错误

    我创建了一个定制适配器管理一些Buttons每个里面ListView物品 如果我向下滚动列表并单击按钮 适配器就会采取错误的位置 LISTVIEW item 1 item 2 item 3 item 4 item 5 item 6 item
  • 如何以编程方式调用 Maven 任务

    我在另一个构建工具 Clojure 的 leiningen 但这不重要 的上下文中使用 Maven 我想知道如何调用像依赖 构建类路径 http maven apache org plugins maven dependency plugi
  • 在序言中随机播放

    我正在尝试在序言中编写一个过程 其中如果 L1 1 2 3 且 L2 4 5 6 那么 L3 1 4 2 5 3 6 so shuffle 1 2 3 4 5 6 1 4 2 5 3 6 到目前为止我有这个 shuffle X Y X Y
  • golang - 反射包中的 Elem 与间接

    来自文档 func v Value Elem Value Elem 返回接口 v 包含的值或指针 v 指向的值 如果 v 的 Kind 不是 Interface 或 Ptr 它会发生恐慌 如果 v 为零 则返回零值 func Indirec
  • PasswordHash 无法与 CodeIgniter 一起使用

    我已经把我下载的文件放在了http www openwall com phpass http www openwall com phpass to application libraries 在我的控制器中 我使用这段代码 params a
  • Java中如何手动进行长时间Full GC

    如何编写一些代码将对象分配到 Old Gen 中 从而导致 Full GC 时间超过三五秒 将对象分配到 Old Gen 中 和 长 GC 暂停 很难结合起来 因为你可以对垃圾收集器做的最糟糕的事情就是创建大量小的 链接的 活动的对象 形成
  • 多重排序的 URL 查询字符串约定

    我有一个 RESTful Web 应用程序 支持对项目集合进行多个排序字段 是否存在将这些排序字段编码到 URL 的查询字符串中的通用约定 我正在考虑如下的模式 http myapp com books sort author asc da
  • 如何在c#中获取组合键

    How can I capture Ctrl Alt K P keys on a C form thanks 这是一个和弦 如果不记住看到和弦的第一个击键 就无法检测到它 这有效 public partial class Form1 For
  • gitlab runner 请求的 URL 返回错误:403

    我目前正在使用 gitlab com 不是本地安装 及其多运行程序进行 CI 集成 这在我的一个项目中效果很好 但在另一个项目中却失败了 我的主机使用的是 2012R2 MSBuild 版本为 14 0 23107 0 我知道下面的错误显示
  • 将函数映射到两个输入列表

    我有一个函数想要用多组输入进行测试 假设函数是 f a gt b gt c 现在我有两个输入列表 inputA a inputB b For inputA i 我要评价f input i对于列表中的每个元素inputB i 我知道我需要几个
  • React - 预填充表单

    我需要预先填充一个表单 以便用户可以编辑他们之前创建的博客 我正在寻找在 React 中执行此操作的最佳实践方法 我目前正在通过 props 将值传递给组件 然后将状态属性设置为等于 props 属性 但我读到这是一种反模式 我理解 真理之