最近,我在React应用程序中将我的react-scripts更新为3.0.0版本,我的所有操作都停止工作。
我使用的是redux-promise-middleware,所以在获取数据时总是使用这种模式:
export const FIRST_ACTION = 'FIRST_ACTION';
export const FIRST_ACTION_PENDING = 'FIRST_ACTION_PENDING';
export const FIRST_ACTION_REJECTED = 'FIRST_ACTION_REJECTED';
export const FIRST_ACTION_FULFILLED = 'FIRST_ACTION_FULFILLED';store.js
import promiseMiddleware from 'redux-promise-middleware';
export default function configureStore() {
return createStore(
rootReducer,
applyMiddleware(thunk, promiseMiddleware(), logger)
);
}在我的操作中,我通常是在一个链中执行几个请求:
import {
firstAction,
secondAction
} from '../service';
const chainedAction = (...) => {
return (dispatch) => {
return dispatch({
type: FIRST_ACTION,
payload: firstAction(...)
}).then(() => dispatch({
type: SECOND_ACTION,
payload: secondAction(...)
}));
};
};更新之后,我将得到以下错误:
React Hook "firstAction" cannot be called inside a callback. React Hooks must be called in a React function component or a custom React Hook function react-hooks/rules-of-hooks是否有人知道如何迁移我的操作,使它们符合最新的依赖关系?
编辑:我在react组件中导入这个操作,并从那里调用它:
import {
chainedAction
} from '../actions';
...
<Button onClick={(...) => chainedAction(...)}
...
const mapDispatchToProps = dispatch => (
bindActionCreators({
chainedAction
}, dispatch)
);
export default connect(mapStateToProps, mapDispatchToProps)(MyPage);firstAction (第二个动作类似):
export const firstAction = (...) => {
return new Promise((resolve, reject) => {
fetch(API_URL, {
method: 'POST',
body: ...
}).then(response => {
if (response.ok) {
resolve(response.text());
}
reject('...');
}).catch(error => {
return reject(error.message);
});
});
};发布于 2019-08-29 07:12:50
我终于发现了错误。我的一个函数叫做useCOnsumable。因为use前缀,反应认为它是一个钩子和抱怨。这与redux-promise-middleware无关。
一旦我重命名了无效函数,迁移就变得非常无痛。
https://stackoverflow.com/questions/55879206
复制相似问题