import { connect } from 'dva';
import React, { useEffect } from 'react';
const Page = props => {
const { dispatch, text } = props;
useEffect(() => {
dispatch({ type: 'xxx/fetchText' });
}, []);
return <div>{text}</div>
}
export default connect(({ xxx }) => ({ text: xxx.text }))(Page);
рдпрджрд┐ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЪреЗрдХ рдХрд░рддреЗ рд╕рдордп рдирд┐рдпрдо react-hooks/exhaustive-deps
React Hook useEffect has a missing dependency: dispatch.
рджреНрд╡рд╛рд░рд╛ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдбрд┐рд╕реНрдкреИрдЪ рдХреЛ useEffect рдХреА рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рд▓рд┐рд╕реНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдореЗрдВ рдЕрдиреБрд░реЛрдз рд▓рдЧрд╛рддрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдВрдЧреЗред dva рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рд░рд┐рдПрдХреНрдЯ рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП?
рдЙрдкрдпреЛрдЧ рдбрд┐рд╕реНрдкреИрдЪ, рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрд▓рд╕реА рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕реНрдЯреЛрд░ рд╕реЗ рд╕рднреА рдкреНрд░рднрд╛рд╡ рдФрд░ рд░реЗрдбреНрдпреВрд╕рд░ рдирд┐рдХрд╛рд▓реЗ, рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреЛрдЬрд╛ рдФрд░ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛, рджреЗрдЦреЗрдВ:
function useActions(namespace) {
const dispatch = useDispatch();
const actions = useMemo(() => {
const { _models } = getStore();
const targetModel = _models.find(model => model.namespace === namespace);
return targetModel ? Object.keys({ ...targetModel.effects, ...targetModel.reducers }).reduce((prev, curre) => {
const actionName = curre.replace(new RegExp(`^${namespace}/`), '');
prev[actionName] = payload => dispatch({ type: curre, payload });
return prev;
}, {}) : {};
}, [namespace, dispatch]);
return actions;
}
рдЙрдкрдпреЛрдЧ рдбрд┐рд╕реНрдкреИрдЪ, рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрд▓рд╕реА рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕реНрдЯреЛрд░ рд╕реЗ рд╕рднреА рдкреНрд░рднрд╛рд╡ рдФрд░ рд░реЗрдбреНрдпреВрд╕рд░ рдирд┐рдХрд╛рд▓реЗ, рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреЛрдЬрд╛ рдФрд░ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛, рджреЗрдЦреЗрдВ:
function useActions(namespace) { const dispatch = useDispatch(); const actions = useMemo(() => { const { _models } = getStore(); const targetModel = _models.find(model => model.namespace === namespace); return targetModel ? Object.keys({ ...targetModel.effects, ...targetModel.reducers }).reduce((prev, curre) => { const actionName = curre.replace(new RegExp(`^${namespace}/`), ''); prev[actionName] = payload => dispatch({ type: curre, payload }); return prev; }, {}) : {}; }, [namespace, dispatch]); return actions; }
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рд░рд┐рдпреЛрдВ рдиреЗ useDispatch() рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рд╣реИред
рдЕрднреА
рдЗрд╕ рддрд░рд╣ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВ
@UlyC рдХреЛ рдХрд╣рд╛рдБ рд╕реЗ рд╣рдЯрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпрд╛ рдЖрдк рдХреЛрдИ рд▓рд┐рдВрдХ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ?
@UlyC рдХреЛ рдХрд╣рд╛рдБ рд╕реЗ рд╣рдЯрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпрд╛ рдЖрдк рдХреЛрдИ рд▓рд┐рдВрдХ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ?
рдореИрдВ рдЧрд▓рдд рдерд╛ред
https://reactjs.org/docs/hooks-reference.html рдкрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░рд┐рдПрдХреНрдЯ рд╣реБрдХ рдПрдкреАрдЖрдИ рдореЗрдВ рдХреЛрдИ рдЙрдкрдпреЛрдЧ рдбрд┐рд╕реНрдкреИрдЪ () рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рд╣реИ,
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░реЗрдбрдХреНрд╕ рд╕реЗ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░реЗрдбрдХреНрд╕ https://react-redux.js.org/next/api/hooks#useddispatch рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реИ
import { useDispatch } from 'react-redux'
@UlyC рдХреЛ рдХрд╣рд╛рдБ рд╕реЗ рд╣рдЯрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпрд╛ рдЖрдк рдХреЛрдИ рд▓рд┐рдВрдХ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ?
рдореИрдВ рдЧрд▓рдд рдерд╛ред
https://reactjs.org/docs/hooks-reference.html рдкрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░рд┐рдПрдХреНрдЯ рд╣реБрдХ рдПрдкреАрдЖрдИ рдореЗрдВ рдХреЛрдИ рдЙрдкрдпреЛрдЧ рдбрд┐рд╕реНрдкреИрдЪ () рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рд╣реИ,
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░реЗрдбрдХреНрд╕ рд╕реЗ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░реЗрдбрдХреНрд╕ https://react-redux.js.org/next/api/hooks#useddispatch рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реИ
import { useDispatch } from 'react-redux'
= - рдЕрдЪреНрдЫрд╛
~ const dispatch = useDispatch();
рд╣реБрдХ рдХреНрдпрд╛ рдпрд╣ рд╡рд╛рджрд╛ рдирд╣реАрдВ рдХрд░рддреЗ? ~
dva . рдореЗрдВ рд╡рд╛рджрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рднрд╛рд╡ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ
рдХреНрдпрд╛ dva/umi рдиреЗ рд╣реБрдХ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ? рдпрджрд┐ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ import { useDispatch } from 'react-redux'
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдХреНрдпрд╛ рдЫреЗрдж рд╣реЛрдВрдЧреЗред
рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛, рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ
@рдпреЛрдпреЛ837
````
'dva' рд╕реЗ рдЖрдпрд╛рдд {useDispatch};
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ('6:23:08 рдЕрдкрд░рд╛рд╣реНрди', рдЙрдкрдпреЛрдЧ рдбрд┐рд╕реНрдкреИрдЪ)
````
рдореИрдВ рдЗрд╕ рддрд░рд╣ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реВрдВред рдХреНрдпрд╛ рдореБрдЭреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░реЗрдбрдХреНрд╕ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?рдХрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ?
dva рдирд╡реАрдирддрдо рдмреАрдЯрд╛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ
рдЖрдк рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рд░рд┐рд▓реАрдЬрд╝ рджреЗрдЦреЗрдВ
рдореИрдВ рдЕрдкрдЧреНрд░реЗрдб рдХреЗ рдмрд╛рдж рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╢рд╛ рдХрд░рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓рд╛ рд╣реИ рдХрд┐ useDispatch рдлрд╝рдВрдХреНрд╢рди рдХреНрдпрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред
dva
рд╕реАрдзреЗ react-redux
useDispatch
рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдк рдХреЗрд╡рд▓ react-redux
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ
1. рдбреАрд╡реАрдП рдХреЛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ (рдореЗрд░рд╛ рд╕рдВрд╕реНрдХрд░рдг 2.6.0-рдмреАрдЯрд╛.12 рд╣реИ)
2.
рд╕рдВрджрд░реНрдн рдкрддрд╛: https://react-redux.js.org/api/hooks
рдореБрдЭреЗ рдорджрджрдЧрд╛рд░ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИ
Antd Pro V4 рдХреЛ 2.6beta 12 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдиреЗрдХреНрдЯ рд░рд┐рдкреЛрд░реНрдЯ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдЧрд▓рдд рд╣реИред TableList рдХрд╛ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ, рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд░реЗрдВ?
ф╜Ьф╕║шбиш╛╛х╝Пш░ГчФицЧ╢я╝МцЧац│ХшзгцЮРч▒╗ф┐още░хЩичЪДчн╛хРНуАВ
ф╕НшГ╜х░Жч▒╗хЮЛтАЬConnectedComponentClass<typeof TableList, Pick<TableListProps, "form" | "wrappedComponentRef">>тАЭхИЖщЕНч╗Щч▒╗хЮЛтАЬtypeof TableListтАЭуАВ
Type 'Component<Pick<TableListProps, "form" | "wrappedComponentRef">, any, any>' is missing the following properties from type 'TableList': columns, handleStandardTableChange, handleFormReset, toggleForm, and 10 more.
@ wangzipeng404 рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдХрдиреЗрдХреНрдЯ рдШрдЯрдХреЛрдВ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ
рд▓реЗрдХрд┐рди рдкреНрд░реЛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рд▓реЗрдЖрдЙрдЯ рдФрд░ рдмреНрд▓реЙрдХ рдХрдиреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпрд╛ рдореБрдЭреЗ рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рдпрдВ рдмрджрд▓рдирд╛ рд╣реИ, рдХреНрдпрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ
рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкрд░реАрдХреНрд╖рдг рдХреЗрд╕ рд▓рд┐рдЦрд╛ рд╣реИ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
import React, { Component } from 'react';
import { connect } from 'dva';
import ProductList from '../components/ProductList';
@connect(({ products }) => ({
products,
}))
export default class Products extends Component {
componentDidMount() {
const { dispatch } = this.props;
dispatch({
type: 'products/fetch',
});
}
handleDelete = id => {
const { dispatch } = this.props;
dispatch({
type: 'products/delete',
payload: id,
});
};
render() {
const { products } = this.props;
return (
<div>
<h2>List of Products</h2>
<ProductList onDelete={this.handleDelete} products={products} />
</div>
);
}
}
рдмрд╛рдж рдореЗрдВ, рдореИрдВрдиреЗ https://react-redux.js.org/next/api/hooks рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рд╣реБрдХ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛
import React, { useEffect } from 'react';
// import { connect } from 'dva';
import ProductList from '../components/ProductList';
import { useSelector, useDispatch } from 'react-redux';
// https://react-redux.js.org/next/api/hooks
export default function Products() {
console.info(`useDispatch: `,useDispatch)
const dispatch = useDispatch();
const products = useSelector(state => state.products);
useEffect(() => {
dispatch({
type: 'products/fetch',
});
});
const handleDelete = id => {
dispatch({
type: 'products/delete',
payload: id,
});
};
return (
<div>
<h2>List of Products</h2>
<ProductList onDelete={handleDelete} products={products} />
</div>
);
}
рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░ рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИ
рд╣реБрдХ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдкреНрд░рдмрд▓ рдЖрд╢рд╛ рд╣реИ
@ liudonghua123 рдЗрд╕ рдмрд╛рд░ dva рд╕реНрд░реЛрдд рдХреЛрдб рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд▓реНрджреА рд╕реЗ рдкреВрдЫрддрд╛ рд╣реИредрдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдЖрдкрдХрд╛ рдХреЛрдб рдбреАрд╡реАрдП рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░реЗрдбрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
@ liudonghua123 рдЙрдкрд░реЛрдХреНрдд рддрдерд╛рдХрдерд┐рдд рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдЙрджрд╛рд╣рд░рдг рдбреАрд╡реАрдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд▓реЛрдб рдХрд┐рдП рдмрд┐рдирд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдФрд░ рдбреАрд╡реАрдП рд╕реАрдзреЗ рдХрдиреЗрдХреНрдЯ, рдЙрдкрдпреЛрдЧ рдЪрдпрдирдХрд░реНрддрд╛ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░реЗрдбрдХреНрд╕ рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдХрд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИред
@ yoyo837 рдЬрд┐рд╕ рдХреЛрдб рдХрд╛ рдореИрдВ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдКрдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рд╡рд╣ рдХреЛрдб рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдбреАрд╡реАрдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рднрд╛рдЧ рдХрд╣реАрдВ рдФрд░ рд╣реИ, рдореИрдВрдиреЗ рдпрд╣ рд╕рдм рдпрд╣рд╛рдВ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реИ, рдХреЛрдб https://dvajs.com/guide/getting- рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ- https://github.com/liudonghua123/dva-quickstart/blob/hooks/src/routes/Products.js , рд╣реБрдХ рд╢рд╛рдЦрд╛ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реИ, рдорд╛рд╕реНрдЯрд░ рд╢рд╛рдЦрд╛ рдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВрдиреЗ dva
рд╕реЗ 2.6.0-beta.14
рддрдХ рдЕрдкрдбреЗрдЯ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдХреЛрдб рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдВрд╢реЛрдзрди рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП, useSelector
, useDispatch
рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ dva
рдирд┐рд░реНрдпрд╛рдд рдереЛрдбрд╝рд╛ рдмреЗрд╣рддрд░ рд╣реИ рд╕рднреА рд╕рдВрд╢реЛрдзрди рд╣реИрдВ
https://github.com/liudonghua123/dva-quickstart/commit/f9bd1dd1332e62739d15050c4d50bc069a7fb58f
рд▓реЗрдХрд┐рди рдкреНрд░реЛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рд▓реЗрдЖрдЙрдЯ рдФрд░ рдмреНрд▓реЙрдХ рдХрдиреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпрд╛ рдореБрдЭреЗ рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рдпрдВ рдмрджрд▓рдирд╛ рд╣реИ, рдХреНрдпрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ
рдирдорд╕реНрддреЗ, рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рд╣реИ?antd-pro-ts рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд dva_beta рд╕рдВрд╕реНрдХрд░рдг рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ
could not find react-redux context value; please ensure the component is wrapped in a <Provider>
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдВрджрд░ рдмрд╣реБрдд рд╕рд╛рд░рд╛ рд╕рд╛рдорд╛рди рднрд░рд╛ рд╣реБрдЖ рд╣реИ
@ liudonghua123 рдЙрдкрд░реЛрдХреНрдд рддрдерд╛рдХрдерд┐рдд рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдЙрджрд╛рд╣рд░рдг рдбреАрд╡реАрдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд▓реЛрдб рдХрд┐рдП рдмрд┐рдирд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдФрд░ рдбреАрд╡реАрдП рд╕реАрдзреЗ рдХрдиреЗрдХреНрдЯ, рдЙрдкрдпреЛрдЧ рдЪрдпрдирдХрд░реНрддрд╛ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░реЗрдбрдХреНрд╕ рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдХрд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд┐рд╢реНрд░рдг рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╡рд╣реА рд╕рд┐рджреНрдзрд╛рдВрдд рдирд╣реАрдВ рд╣реИ
Antd Pro V4 рдХреЛ 2.6beta 12 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдиреЗрдХреНрдЯ рд░рд┐рдкреЛрд░реНрдЯ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдЧрд▓рдд рд╣реИред TableList рдХрд╛ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ, рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд░реЗрдВ?
ф╜Ьф╕║шбиш╛╛х╝Пш░ГчФицЧ╢я╝МцЧац│ХшзгцЮРч▒╗ф┐още░хЩичЪДчн╛хРНуАВ ф╕НшГ╜х░Жч▒╗хЮЛтАЬConnectedComponentClass<typeof TableList, Pick<TableListProps, "form" | "wrappedComponentRef">>тАЭхИЖщЕНч╗Щч▒╗хЮЛтАЬtypeof TableListтАЭуАВ Type 'Component<Pick<TableListProps, "form" | "wrappedComponentRef">, any, any>' is missing the following properties from type 'TableList': columns, handleStandardTableChange, handleFormReset, toggleForm, and 10 more.
рдореБрдЭреЗ рднреА рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рд╣реИ?
рд╣реБрдХ рдХреЗ рд╕рд╛рде, рдЖрдкрдХреЛ рдлрд┐рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рд╣реБрдХ рдХреЗ рд╕рд╛рде, рдЖрдкрдХреЛ рдлрд┐рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд╣рд▓реЗ рд╡рд░реНрдЧ рдХреЗ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рд▓рд┐рдЦреА рдЧрдИ рдереА, рдФрд░ рд╣реБрдХ рдХреЗ рд╕рд╛рде рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХрд╛ рдХрд╛рд░реНрдпрднрд╛рд░ рдереЛрдбрд╝рд╛ рднрд╛рд░реА рд╣реИ, рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдЪреЗрддрд╛рд╡рдиреА рдмрд╣реБрдд рдХрд╖реНрдЯрдкреНрд░рдж рд▓рдЧрддреА рд╣реИ
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреБрд░рд╛рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рд╣рд╛рд▓ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИред рдЖрдЧреЗ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдкрдХреЗ рдпреЛрдЧрджрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
https://github.com/dvajs/dva/issues/2140#issuecomment -507620628 рд╕реБрдирдХрд░ рдЦреБрд╢реА рд╣реБрдИ
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
https://www.npmjs.com/package/dva-react-hook