【发布时间】:2021-03-29 09:45:33
【问题描述】:
我是 React 的新手,我目前正在努力解决这个我似乎无法找到解决办法的概念。我必须组件,父母和孩子。 Parent 组件通过 props 将数据传递给 Child 组件。我可以看到第一次渲染页面时正在传输数据,但我在控制台中注意到,页面的第二次和第三次渲染,数组返回为未定义。我不明白为什么数组是未定义的,是不是因为我没有在子组件中设置状态?
子组件代码:
export class NumOfDaysTable extends Component {
static displayName = NumOfDaysTable.name;
constructor(props) {
super(props);
this.state = {
headers: [["Number", "Type", "Customer Name", "Customer", "Code", "Amount", "Date Submitted", "Notes", "Status"]],
data: props.dataParentToChild
};
}
render() {
const { data } = this.state;
console.log( data)
const { headers } = this.state;
return (
<div>
<h4 > {this.props.title} </h4>
<Container>
<Table size="sm">
<thead>
{headers.map((headerData) => (
<tr>
{headerData.map((headerRecord) => (
<th>{headerRecord}</th>
))}
</tr>
))}
</thead>
<tbody>
{data.map((item) => (
<tr>
{item.map((record) => (
<td>{record} </td>
))}
</tr>
))}
</tbody>
</Table>
</Container>
</div>
);
}
}
export default NumOfDaysTable; ```
【问题讨论】:
-
您不想将道具重新分配到本地化状态,这可能是导致您的错误的原因。查看reactjs.org/docs/state-and-lifecycle.html
-
我很困惑,现在当我开始的时候,也许这就是进步哈哈。根据文档,如果我的理解是正确的,我想使用 componentDidMount 来设置数据,然后在我的渲染中映射它。但是,当我添加它时,我的错误仍然是一样的。我仍然收到未定义的错误。
-
嘿,我明白了,不用担心。不过要明确一点,不要尝试将道具分配给本地状态,无论是在
constructor还是componentDidMount。道具应该被子组件“接受”。也许数据最初是undefined,因此您可能需要在尝试访问该数据之前添加保护。
标签: javascript arrays reactjs react-native