当前位置: 首页 > 面试题库 >

以Redux形式动态加载initialValues

白智
2023-03-14
问题内容

以Redux-Form中的InitializationFromState为例,我试图动态地进行设置。这是在书籍列表中编辑特定书籍,并使用在express.js中设置的简单api。

完整的容器在下面。我不知何故需要initialValuesmapStateToProps函数中传递。在示例中,这是通过静态对象完成的,但我无法弄清楚如何使用通过提取的信息fetchBook并将其传递给initialValues

容器:

import React, { Component, PropTypes } from 'react';
import { reduxForm } from 'redux-form';
import { connect } from 'react-redux';
import { Link } from 'react-router';
import { fetchBook, editBook } from '../actions/index';

class BookEdit extends Component {

  componentWillMount() {
      this.props.fetchBook(this.props.params.id);
  }

    static contextTypes = {
    router: PropTypes.object
    }

  onSubmit(props) {
    this.props.editBook(this.props.book.id, props)
      .then(() => {
        this.context.router.push('/');
      });
  }

    const data = {
        title: {this.props.book.title},
        description: {this.props.author}
    }

  render() {

    const { fields: { title, author }, handleSubmit } = this.props;
    const { book } = this.props;

    if (!book) {
      return (
          <div>
            <p>Loading...</p>
          </div>
      )
    }

    return (
      <div>
      <Link to="/">Back</Link>
        <form onSubmit={handleSubmit(this.onSubmit.bind(this))}>
                <h2>Add a new book</h2>

                <label>Title</label>
                <input type="text" {...title} />
                <div className="text-help">{title.touched ? title.error : ''}</div>

                <label>Author</label>
                <input type="text" {...author} />
                <div className="text-help">{author.touched ? author.error : ''}</div>

                <button type="submit">Add</button>
                <Link to="/" className="button">Go back</Link>
            </form>
      </div>
    );
  }
}

function mapStateToProps(state) {
  return {
      book: state.books.book,
      initialValues: // how do I pass in the books here?
  };
}

export default reduxForm({
  form: 'EditBookForm',
  fields: ['title', 'author']
}, mapStateToProps, { fetchBook, editBook })(BookEdit);

谢谢。


问题答案:

您的表单值不是state.books.book吗?我认为这就是您要寻找的全部:

function mapStateToProps(state) {
  return {
      book: state.books.book,
      initialValues: state.books.book
  };
}

由于您只是真正this.props.book地了解是否已加载,因此更明确地执行以下操作:

function mapStateToProps(state) {
  return {
      loaded: !!state.books.book,
      initialValues: state.books.book
  };
}

希望有帮助。



 类似资料:
  • 使用Redux表单中的initializingFromState示例,我试图动态地设置它。这是为了编辑书籍列表中的特定书籍,并使用在express.js中设置的简单api。 完整的容器在下面。不知何故,我需要在mapStateToProps函数中传入。在这个例子中,它是通过一个静态对象完成的,但是我不知道如何使用我通过获取的信息,并将其传递给。 容器: 谢谢你。

  • 问题内容: 我想使用DatePicker通过Redux表单选择日期。我创建这个: 但是它不会返回任何值,并且不会在字段中显示日期,我该怎么办? 问题答案: 您希望包装DatePicker元素,使其可以用作“字段”上的组件,如下所示: 有关更多信息,请参见此GitHub问题:https : //github.com/Hacker0x01/react- datepicker/issues/543

  • 问题内容: 我正在编写一个具有静态外部“外壳”和动态内容部分的Web应用程序。用户浏览系统时,动态内容部分具有许多更新。加载新的内容块时,还可以选择加载另一个JavaScript文件。我以良好的内务管理名义,从DOM中删除了适用于旧内容块的脚本块,因为不再需要JavaScript。 接下来是问题,当我意识到尽管我已经从DOM中删除了该元素,但是先前评估过的JavaScript仍然可以执行。这当然是

  • pre { white-space: pre-wrap; } 动态加载树形网格有助于从服务器上加载部分的行数据,避免加载大型数据的长时间等待。本教程将向您展示如何创建带有动态加载特性的树形网格(TreeGrid)。 创建树形网格(TreeGrid)     <table title="Products"             url="treegrid3_getdata.php"       

  • 问题内容: 我正在尝试为我的网站创建页面主题功能。我想使用单独的CSS文件在页面上动态加载相应的主题。 我正在使用此代码: 效果很好,但是如果CSS文件未加载,它不会返回任何信息。 加载时,有什么方法可以捕捉吗?也许通过使用ajax? 问题答案: 加载CSS文件(或其任何其他更改)时,Internet Explorer会触发一个事件。其他浏览器不会触发任何事件,因此您将必须手动检查样式表是否已加载

  •  说明 调用方法: $.f2e.util.getScript(url,cache,fn); 函数说明: 加载js,并提供相关回调 参数说明: 参数名 类型 说明 备注 url string 地址 无 cache boolean 缓存 无 fn function 回调函数 无 脚本 <script> $.f2e.util.getScript(url,true,function(){