reactjs - 使用 React 和 Redux 显示数组的内容
问题描述
我是 React 的新手,甚至是 Redux 的新手。我要做的就是将数组的内容输出到网页。我想维护 Redux 结构(单向数据流,reducers)。当我单击 Generate a New Array 按钮时,reducer 会生成一个数组并保存为状态。在我尝试使用 输出数组map
时,我看到错误告诉我myarray.map is not a function
。考虑到我从状态中拉出数组,我有点困惑,它应该被填充。
初始状态
const initialState = {
array: [],
algo: null,
size: 30,
}
减速机
const arrayReducer = (state,action) => {
if (action.type === GENERATE_NEW_ARRAY){
let arr = [];
let size = state.size;
let limit = size*3;
for(let i=0;i<size;++i){
let num = Math.floor((Math.Random() * limit) + 1);
arr.push(num);
}
return { array: arr };
}
return state || { array: [] };
};
const rootReducer = combineReducers({
array: arrayReducer,
algo: algoReducer,
size: sizeReducer,
});
选择器
const getSize = state => state.size;
反应组件
function GenerateNewArray({ value, generateNewArray }){
return(
<div>
<button onClick={() => generateNewArray(value)}>
Generate a New Array
</button>
</div>
)
}
const GenerateNewArrayConnected = connect(
state => ({
size: getSize(state)
}),
dispatch => ({
generateNewArray: size => dispatch(generateNewArray(size))
})
)(GenerateNewArray);
我希望数组出现在 Generate a New Array 按钮下方,但我希望它作为一个单独的实体(如果可能),因为它们最终将是两个单独的组件。显示数组的最佳方法是什么?
解决方案
假设为您的 rootReducer 定义了 initialState,您只需要返回数组 fromarrayReducer
而不是{array: arr}
const arrayReducer = (state,action) => {
if (action.type === GENERATE_NEW_ARRAY){
let arr = [];
let size = state.size;
let limit = size*3;
for(let i=0;i<size;++i){
let num = Math.floor((Math.Random() * limit) + 1);
arr.push(num);
}
return arr;
}
return state;
};
推荐阅读
- wordpress - 检查当前帖子是否在父类别或其子类别中
- asp.net - 是否可以在同一 Apache 服务器和具有不同子域的同一端口上运行 .net 应用程序和 wordpress 博客?
- c# - 显示名称的本地化
- hyperledger-fabric - 是否可以在 Hyperledger Fabric 中管理来自 HSM 的 TLS 证书?
- reactjs - 如何在 React-Redux 中从状态中引入用户 ID
- ios - 在SwiftUI中点击watchOS应用程序时如何更改图像
- .net - 为什么 Path.Combine() 不尊重“..”(上一级文件夹)?
- rabbitmq - 脚本 RabbitMQ 绑定
- awk - 试图将转义字符作为变量传递给 awk
- xml - XSLT-如何根据来自另一个 XML 的信息插入标签属性