javascript - 如何将状态值从组件传递到另一个包含参数设置的子组件?
问题描述
我有一个基本组件,可以通过 axios 获取用户信息,然后设置用户状态。但是在组件中,我还有另一个嵌套组件,它是一个表单类型的组件,它设置占位符、defaultValue 等。
这是获取数据并设置状态的生命周期方法:
componentDidMount() {
axios.get('https://niftyURLforGettingData')
.then(response => {
console.log(response.data);
const users = response.data;
this.setState({ users });
})
.catch(error => {
console.log(error);
});
}
嵌套在这个组件中的是我的表单组件:
<FormInputs
ncols={["col-md-5", "col-md-3", "col-md-4"]}
properties={[
{
defaultValue: "I NEED VALUE HERE: this.state.users.id",
}
/>
如果我只使用: {this.state.users.id} 在组件之外它可以工作......但在表单内部......什么都没有。
我很确定我必须将状态传递给这个组件......但不能完全理解它。
解决方案
我很确定它不起作用,因为users
当undefined
您的组件第一次呈现时。尝试在状态下初始化该变量,执行如下操作:
state = {
users: {}
}
然后使用后备因为id
也undefined
会这样做:
<FormInputs
ncols={["col-md-5", "col-md-3", "col-md-4"]}
properties={[
{
defaultValue: this.state.users.id || "Fallback Value", // this will render "Fallback value" if users.id is undefined
}
/>
如果不是这种情况,请分享有关您的情况的更多信息。
推荐阅读
- html - 在 iOS 12 中使用动画 DOM 列表滚动时容器正在闪烁
- reactjs - axios 异步函数返回错误的顺序
- c++ - 如何在 C++ 中使用缓存?
- android - 如何修复:错误:org.json.JSONException:输入在字符 0 处结束
- java - 如何通过换行符和固定数量的制表符拆分字符串,如 Java 中的“\n\t”?
- architecture - 同一应用程序中向自己发送事件/命令的组件
- flutter - 颤振通知没有响起任何声音
- c++ - 指针自动指向内存地址
- ios - 条带反应本机ios的未定义错误
- php - PHP Spreadsheet 从单元格获取图像 TMP 以上传图像