Reactjs Redux表单可以';不编辑用户配置文件

Reactjs Redux表单可以';不编辑用户配置文件,reactjs,redux,redux-form,Reactjs,Redux,Redux Form,我正在尝试在React+Redux form+Firebase中创建一个编辑用户配置文件表单,我的问题是,我无法在Redux表单的生成表单中输入任何文本。我试图输入一些文字,但它被禁用 事实上,最初我获取用户配置文件数据(它可以正常工作)。然后我尝试构建编辑表单来编辑配置文件 class Settings extends Component { constructor(props) { super(props); } componentDidMount() { th

我正在尝试在React+Redux form+Firebase中创建一个编辑用户配置文件表单,我的问题是,我无法在Redux表单的生成表单中输入任何文本。我试图输入一些文字,但它被禁用

事实上,最初我获取用户配置文件数据(它可以正常工作)。然后我尝试构建编辑表单来编辑配置文件

class Settings extends Component {
  constructor(props) {
    super(props);
  }

  componentDidMount() {
    this.props.fetchProfile();
  }

  renderField = field => {
    const {
      input,
      label,
      type,
      meta: { touched, error }
    } = field;
    return (
      <div className="formItem">
        <p>{label}</p>
        <input {...input} type={type} placeholder={label} />
        {touched && error && <span>{error}</span>}
      </div>
    );
  };

  onSubmit = values => {
    const { uid } = this.props.room;
    this.props.updateProfile(uid, values);
  };

  render() {
    const { handleSubmit, pristine, submitting, invalid, room } = this.props;
    return (
      <div>
        <form onSubmit={handleSubmit(this.onSubmit)}>
          <Field
            label="Your name"
            name="name"
            type="text"
            value={user.name}
            component={this.renderField}
          />
          <div className="formBtn">
            <input
              type="submit"
              className="btn btnPrimary"
              value="Save Changes"
              disabled={pristine || submitting || invalid}
            />
          </div>
        </form>
      </div>
    );
  }
}

const validate = values => {
  const errors = {};
  console.log(values);
  if (!values.name) errors.name = "Enter your name";
  return errors;
};

const mapDispatchToProps = { fetchProfile, updateProfile };

function mapStateToProps({ users }) {
  return { user: users };
}

export default connect(
  mapStateToProps,
  mapDispatchToProps
)(
  reduxForm({ validate, form: "profileForm", enableReinitialize: true })(
    Settings
  )
);
类设置扩展组件{
建造师(道具){
超级(道具);
}
componentDidMount(){
this.props.fetchProfile();
}
renderField=字段=>{
常数{
输入,
标签,
类型,
元:{触摸,错误}
}=字段;
返回(
{label}

{触摸&&error&&{error} ); }; onSubmit=值=>{ const{uid}=this.props.room; this.props.updateProfile(uid,值); }; render(){ const{handleSubmit,pristite,submiting,invalid,room}=this.props; 返回( ); } } 常量验证=值=>{ 常量错误={}; console.log(值); 如果(!values.name)出现错误。name=“输入您的姓名”; 返回错误; }; 常量mapDispatchToProps={fetchProfile,updateProfile}; 函数MapStateTops({users}){ 返回{user:users}; } 导出默认连接( MapStateTops, mapDispatchToProps )( reduxForm({validate,form:“profileForm”,enableReinitialize:true})( 设置 ) );
您不需要向
字段提供值,而是需要在
MapStateTrops
中以
初始值的形式传递值:

function mapStateToProps({ users }) {
  return {
    user: users,
    initialValues: {
      name: users.name,
    },
  };
}

我已经添加了formReducer,它可以工作。

并且输入“提交”类型很混乱,只需使用
保存更改
非常感谢您的建议!我会修好的
import { createStore, applyMiddleware, combineReducers } from "redux";
import reduxThunk from "redux-thunk";
import { reducer as formReducer } from "redux-form";

const rootReducer = combineReducers({
  form: formReducer
});

const store = createStore(rootReducer, applyMiddleware(reduxThunk));
export default store;