我有以下结构:
FormEditor
-包含多个FieldEditor- FieldEditor
编辑表单的字段并在其状态下保存有关该字段的各种值
在FormEditor中单击按钮时,我希望能够从所有FieldEditor
组件中收集有关字段的信息,处于其状态的信息,并将其全部包含在FormEditor中。
我考虑过将有关字段信息的信息存储在FieldEditor
的状态之外,FormEditor
而是将其置于的状态。但是,这将需要FormEditor
在FieldEditor
组件的每个组件发生更改时侦听它们并以其状态存储其信息。
我不能只访问儿童的州吗?理想吗?
如果您已经具有用于单个FieldEditor的onChange处理函数,那么我不明白为什么您不能只将状态移到FormEditor组件上,而仅将回调从那里传递给FieldEditor,以更新父状态。对我来说,这似乎是一种更React-
y的方式。
可能与此类似:
const FieldEditor = ({ value, onChange, id }) => {
const handleChange = event => {
const text = event.target.value;
onChange(id, text);
};
return (
<div className="field-editor">
<input onChange={handleChange} value={value} />
</div>
);
};
const FormEditor = props => {
const [values, setValues] = useState({});
const handleFieldChange = (fieldId, value) => {
setValues({ ...values, [fieldId]: value });
};
const fields = props.fields.map(field => (
<FieldEditor
key={field}
id={field}
onChange={handleFieldChange}
value={values[field]}
/>
));
return (
<div>
{fields}
<pre>{JSON.stringify(values, null, 2)}</pre>
</div>
);
};
// To add abillity to dynamically add/remove fields keep the list in state
const App = () => {
const fields = ["field1", "field2", "anotherField"];
return <FormEditor fields={fields} />;
};
原始-钩前版本:
class FieldEditor extends React.Component {
constructor(props) {
super(props);
this.handleChange = this.handleChange.bind(this);
}
handleChange(event) {
const text = event.target.value;
this.props.onChange(this.props.id, text);
}
render() {
return (
<div className="field-editor">
<input onChange={this.handleChange} value={this.props.value} />
</div>
);
}
}
class FormEditor extends React.Component {
constructor(props) {
super(props);
this.state = {};
this.handleFieldChange = this.handleFieldChange.bind(this);
}
handleFieldChange(fieldId, value) {
this.setState({ [fieldId]: value });
}
render() {
const fields = this.props.fields.map(field => (
<FieldEditor
key={field}
id={field}
onChange={this.handleFieldChange}
value={this.state[field]}
/>
));
return (
<div>
{fields}
<div>{JSON.stringify(this.state)}</div>
</div>
);
}
}
// Convert to class component and add ability to dynamically add/remove fields by having it in state
const App = () => {
const fields = ["field1", "field2", "anotherField"];
return <FormEditor fields={fields} />;
};
ReactDOM.render(<App />, document.body);
我有以下结构: -保存FieldEditor的多个实例-编辑表单的字段,并在其状态下保存有关该字段的各种值 当单击FormEditor中的按钮时,我希望能够从所有组件中收集有关字段的信息,处于其状态的信息,并将其全部包含在FormEditor中。 我考虑将有关字段的信息存储在的状态之外,并将其置于的状态。但是,这将需要在其组件更改并将其信息存储在其状态时侦听它们。 我不能直接进入儿童状态吗?理想吗
问题内容: 我只是做一个简单的应用程序来学习与redux异步。我已经使所有工作正常进行,现在我只想在网页上显示实际状态。现在,我实际上如何在render方法中访问商店的状态? 这是我的代码(所有内容都在一页中,因为我只是在学习): 因此,在状态的render方法中,我想列出商店中的所有内容。 谢谢 问题答案: 您应该创建单独的组件,该组件将侦听状态更改并在每次状态更改时进行更新:
我只是做了一个简单的应用程序学习异步与Redux。我已经使所有的工作,现在我只想显示的实际状态到网页上。现在,我如何在render方法中实际访问存储的状态? 这里是我的代码(所有内容都在一个页面中,因为我只是在学习): 谢谢
我在react native中有一个搜索栏组件,它在父组件中导入, SearchBar子组件具有以下元素: 是否可以访问此子组件在其中导入的父组件中的状态?提前感谢你的帮助
我还没有反应过来,现在我的状态中有了这些信息(如图所示),我如何才能访问消息:? 我尝试了和,但似乎两者都不对,有人能告诉我如何访问消息吗?非常感谢。 //////////////////////////////////////////// 嗨,克里斯,非常感谢你的回答。 您是对的,错误对象是从API返回的,我已经将其添加到状态。 我也试过 this.set状态({错误: errorObjFrom
我想访问