我想要一个控制 select 的钩子,但它的初始状态可以通过 url 和 api 调用来定义。
这是我想要实现的行为:
这是我尝试过的(当然它不起作用):
const match = useRouteMatch('/document/:id') //react-router
const result = useAsync(api.getDocuments, []) //react-use
const [selectIndex, setSelectIndex] = useState(match && !(result.loading || result.error) && result.value.documents.findIndex(({_id}) => _id === match.params.id))
Run Code Online (Sandbox Code Playgroud)
基本上我想要一个用于 useState 的异步初始状态
我觉得 useEffect 可能有用,但我仍然不知道如何使用它
我有这张桌子:
+----+-----------+-------+
| id | client_id | is_in |
+----+-----------+-------+
| 1 | 1 | 0 |
+----+-----------+-------+
| 2 | 2 | 0 |
+----+-----------+-------+
| 3 | 1 | 1 |
+----+-----------+-------+
| 4 | 2 | 1 |
+----+-----------+-------+
| 5 | 3 | 1 |
+----+-----------+-------+
| 6 | 3 | 1 |
+----+-----------+-------+
| 7 | 1 | 0 |
+----+-----------+-------+
| 8 | 4 | 0 |
+----+-----------+-------+
| 9 | 4 | 0 …Run Code Online (Sandbox Code Playgroud) 我正在创建一个自定义钩子以在表单提交时获取 api,我在 useEffect 钩子内进行 api 调用,并且我有一个减速器来处理钩子的状态。其中一个状态首先trigger设置为 false 以控制 useEffect 是否执行任何操作,关键是钩子返回一个函数,trigger该函数只在您调用此函数时触发 useEffect 的值。问题是在 api 调用期间调用了 useEffect 的清理函数,即使该组件显然仍处于挂载状态。
清理功能似乎被触发,因为我trigger根据其先前的值设置trigger了 的值,当我设置为固定值时,不会调用清理功能,但我失去了功能
const fetchReducer = (state, action) => {
switch (action.type) {
case 'FETCH_TRIGGER':
return {
...state,
trigger: !state.trigger
}
case 'FETCH_INIT':
return {
...state,
isLoading: true,
isError: false
};
case 'FETCH_SUCCESS':
return {
...state,
isLoading: false,
isError: false,
datas: action.payload,
};
case 'FETCH_FAILURE':
return {
...state,
isLoading: false,
isError: true,
};
default:
throw new Error(); …Run Code Online (Sandbox Code Playgroud) 我有多个具有相同整体结构的项目,它们使用 redux 存储来处理几乎所有状态:
const store = configureStore({
reducer: {
users: userSlice.reducer,
travels: travelSlice.reducer
}
})
//example reducer
const userSlice = createSlice({
name: 'users',
initialState,
reducers: {
addUser: (state, action) => {
state.users.push(action.payload)
},
....
}
})
Run Code Online (Sandbox Code Playgroud)
我制作了一个供项目使用的 utils 库,它有自己的商店(与上面的代码类似),但我们希望每个应用程序只有 1 个商店
有没有办法将 2 家商店合并为 1 家?
在我的公司,我们使用内部 wiki,我需要添加一个表格,但表格非常大,超过 100 列,因此当您想查看所有数据时,您可以水平滚动,但滚动的是所有页面。wikitext 中有没有办法让表格只能滚动?