reactjs - 如何使用 React Hooks 和 Redux 将数据传递给对象
问题描述
我正在尝试使用 react 和 redux 将从数据库获取的数据传递给对象。我不知道我做错了什么
这是我的代码
const [orders, setOrders] = useState([]);
useEffect(() => {
props.fetchOrder(setOrders);
}, []);
console.log(orders);
const columnsFromBackend = {
newOrder: {
name: "Requested",
items: orders
},
x: {
name: "x",
items: []
}
};
const [columns, setColumns] = useState(columnsFromBackend);
console.log(columns);
结果是页面呈现两次,在它显示的控制台中,冷杉
订单 = []
列 = {newOrder: {…}, x: {…}}
在第二次
订单 = (39) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}、{…}、{…}、{…}、{…}、{…}、{…}、{…}、{…}、{…}、{…}、{…}、{… }、{…}、{…}、{…}、{…}、{…}、{…}、{…}、{…}、{…}、{…}、{…}、{…}、 {…}、{…}、{…}]
列 = {newOrder:项目:[]}
newOrder 对象内的 items 属性应该等于 orders,但它保持为空
如何将正确的订单数据传递到 items 属性?
只是为了清除,这是来自 redux 操作的 fetch 函数
export const fetchOrder = setOrders => dispatch => {
fetch("/api/orders")
.then(res => res.json())
.then(data => {
setOrders(data);
dispatch({ type: FETCH_ORDER, payload: data });
});
};
谢谢你,祝你有美好的一天
解决方案
columns
每当更新时,您都需要orders
更新。为此,您需要useEffect
在代码中添加另一个钩子,如下所示。
useEffect(() => {
setColumns(prevState => {
return {
...prevState,
x: {
...prevState.x,
items: orders
}
};
});
}, [orders]);
推荐阅读
- python - 如何伪造丢失的间隔记录?
- java - 使用策略设计模式和@Autowired 将 Bean 实例设为 null
- python - DJango 不执行 request.method == "post" 与 ajax 数据提交
- oauth-2.0 - 如何发现不透明访问令牌的颁发者?
- javascript - 无法以角度读取 Object.onClick 处的 null 属性“值”
- bash - Bash脚本在启动时不执行
- javascript - 投递箱画廊 2
- php - 无法在 Laravel 中获得正确的关系计数
- javascript - 如何在 div 中排列图像?
- python - TensorFlow Keras:`validate_indices` 参数无效。索引始终在 CPU 上验证,从不在 GPU 上验证