javascript - 我正在尝试在控制台中打印道具,但是当我编写 console.log(props.details) 时,它会在控制台中打印两次
问题描述
一旦我渲染了这个功能组件并打开控制台检查道具是否存在。控制台两次显示包含数组的道具,但第一次打印的数组为空,第二次打印的数组包含数据。我真的很困惑,无法调试这个错误。
下面是代码:
const MainConents = (props) => {
console.log(props.details);
return (
<>
<div className="container" style={{marginTop : "20px"}}>
<div className="row">
<div className="col-12">
// show single post in loop wise from database
// show pagination for posts
</div>
</div>
</div>
</>
);
}
export default MainConents;
我的浏览器中的输出是:
解决方案
props
是从父组件传递的,我相信这些details
是通过调用 api 端点获取的。
因此,在初始渲染期间,后端服务器没有响应响应,因此,它会在开头显示一个空数组(这是 的初始值props.details
)。但是当它发送响应时,props.details
现在会更新,因此子组件MainConents
将被重新渲染。然后,它将在控制台日志中显示更新的数组。
因此,最初您会看到一个空数组,然后是更新后的props.details
.
如果您只需要在数组不为空时打印数组。然后你可以把一个简单的条件如下。(但这不是必需的,因为控制台日志仅用于调试目的)
if(props.details.length > 0){
console.log(props.details);
}
推荐阅读
- python - 如何在某个索引处将 numpy 数组值添加到数据框?
- javascript - 阻止表单提交并提交另一个按钮
- python-packaging - Python 诗歌,安装可选依赖项
- python - 使用预测数据对 MultiIndex DataFrame 进行 LSTM/RNN 预处理
- javascript - 如何从末尾开始查找数组中的元素
- node.js - 多选问答的 Mongo 设计模式
- android - 如何设置接收器以在 SMS 应用程序中获取“已发送”和“已交付”报告(应用程序设置为默认应用程序)
- c# - 仅通过 XAML 将复选框绑定到元素可见性
- python - view.setColumnHidden (0, True) 不工作
- javascript - 我将如何在我的控制器中以 express 模拟 axios 调用?