考虑以下:
[SELECT]: (state, action) => {
let newState = {...state, newState}
delete newState[action.payload.key]
return(newState)
}
Run Code Online (Sandbox Code Playgroud)
为什么我可以改变浅拷贝,返回它并仍然满足不改变我的状态的规则?
我有一个散列对象,其中的键是通过用户选择动态添加的。
我想遍历并提取类似,如果它只是一个数组,我会做的方式,值:selections.map(cart => /*do stuff*/)。
我怎样才能做到这一点?
tl; dr - 如果您必须过滤承诺(例如错误的承诺),请不要使用异步函数
我正在尝试使用异步获取 url 列表并解析它们,问题是如果我在获取时其中一个 url 出现错误 - 假设由于某种原因 api 端点不存在 - 程序用明显的错误粉碎解析:
UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): TypeError: ext is not iterable
Run Code Online (Sandbox Code Playgroud)
我试过检查 res.json() 是否未定义,但显然不是这样,因为它抱怨整个 'ext' 承诺数组不可迭代。
async function fetchAll() {
let data
let ext
try {
data = await Promise.all(urls.map(url=>fetch(url)))
} catch (err) {
console.log(err)
}
try {
ext = await Promise.all(data.map(res => {
if (res.json()==! 'undefined') { return res.json()}
}))
} catch (err) {
console.log(err)
}
for (let item of ext) {
console.log(ext) …Run Code Online (Sandbox Code Playgroud) 我试图围绕这个减速器如何工作,所以我可以将REMOVE_ITEM添加到我的动作处理程序中.我当前的尝试给出了一个state.filter不是函数错误.
// ------------------------------------
// Action Handlers
// ------------------------------------
const ACTION_HANDLERS = {
[GET_POSTS]: (state, action) => ({ ...state, ...action.payload}),
[PICK_ITEM]: (state, action) => ({ ...state, ...action.payload}),
[REMOVE_ITEM]: (state, action) => ({...state.filter(item => item !== action.payload)}) // <-- NOT WORKING
}
// ------------------------------------
// Reducer
// ------------------------------------
const initialState = []
export default function contentReducer (state = initialState, action) {
const handler = ACTION_HANDLERS[action.type]
return handler ? handler(state, action) : state
}
Run Code Online (Sandbox Code Playgroud)
我不太确定那里的传播和结构是怎么做的.如果我理解正确,传播给了我们一个复制版本的状态,所以我们不会改变它,但是如何如下:handler(state, action)创建我们的新状态?
我正在尝试过滤一系列嵌套数组中的空字符串条目,但 filter 实际上并没有改变数组。
const text = [
['222','','ghy','','hthb'],
['333','','ghw','','5gth'],
['444','','fht','','5gbh'],
]
text.map(el=>el.filter(entry => entry.trim() != ''))
console.log(text)
Run Code Online (Sandbox Code Playgroud)