reactjs - 反应:道具数据未传递给子组件
问题描述
我在 React 中有 2 个组件,一个父组件和一个子组件。我正在从父组件中的 API 获取数据,并且我想将其传递给子组件。数据获取成功,可以在console.log()中查看数据。数据随后存储在父状态中(我也已验证并在控制台日志中查看它。
根据我数据中的数组数量,我想创建相应数量的子组件。
我最初使用这个功能
{
this.state.tables.map((item) => (
<App data = {this.state.tables} />
))
}
尝试将数据映射到我的子组件。当数据没有通过时,我试图简单地将一个数组(从我的状态)传递到我的子组件
<App data={this.state.tables}/> //App here is my child component
但无济于事。当我控制台日志
props
在我的子组件中,这就是我得到的,我试图通过的道具数据没有通过
{history: {…}, location: {…}, match: {…}, staticContext: undefined}
history: {length: 7, action: "POP", location: {…}, createHref: ƒ, push: ƒ, …}
location: {pathname: "/table", search: "", hash: "", state: undefined, key: "bixd4p"}
match: {path: "/table", url: "/table", isExact: true, params: {…}}
staticContext: undefined
__proto__: Object
当我在子组件的构造函数或 componentDidMount() 中使用 console.log(props.data) 时,我得到
undefined
为什么我的子组件无法通过 this.props.data 访问数据?
下面附上我的父组件和子组件的代码,以便更好地参考
家长
render(){
return (
<div>
{
this.state.tables.map((item) => (
<App data = {this.state.tables} />
))
}
<App data={this.state.tables}/>
<Button style = {{marginTop : 80, marginRight : 30, float : "right"}} variant="contained" color="primary" onClick={() => this.addnewtable()}>
Add New Table
</Button>
</div>
);
}
孩子
constructor(props) {
super(props)
console.log("constructor", this.props)
console.log("props", this.props.data)
this.state = {
users: [],
message: null
}
this.reloadUserList = this.reloadUserList.bind(this);
}
解决方案
尝试这个。
this.state.tables.map( item => (
<App key = {<Some unique value>} data = {item} />
));
推荐阅读
- android - WebView 在 Android 9.0 中没有加载页面?
- javascript - 从角度 2 调用小程序方法
- asp.net - 从 ashx 重定向到 aspx 后,会话变量丢失
- python - 为分组数据生成具有特定长度的 RNN 序列/批次
- regex - Jenkins UI Textfinder如何设置多个正则表达式
- android - 发送有序广播时 FLAG_RECEIVER_FOREGROUND 究竟做了什么?
- mesos - mesos/dcos:暴露一个服务端点
- javascript - 如何使用 React Native 脚本在后台接收 Firebase 通知
- java - 在 Java 程序中使用 Linux Strace 命令
- php - Laravel Socialite - 谷歌登录失败“缺少必需的参数:代码”