Reactjs Redux表单可以';不编辑用户配置文件
我正在尝试在React+Redux form+Firebase中创建一个编辑用户配置文件表单,我的问题是,我无法在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
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;