Dva: рд░рд┐рдПрдХреНрдЯ рд╣реБрдХ рдФрд░ dva рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 27 рдЬреВрди 2019  ┬╖  30рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: dvajs/dva

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 рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рд░рд┐рдПрдХреНрдЯ рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рд╕рднреА 30 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЙрдкрдпреЛрдЧ рдбрд┐рд╕реНрдкреИрдЪ, рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрд▓рд╕реА рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕реНрдЯреЛрд░ рд╕реЗ рд╕рднреА рдкреНрд░рднрд╛рд╡ рдФрд░ рд░реЗрдбреНрдпреВрд╕рд░ рдирд┐рдХрд╛рд▓реЗ, рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреЛрдЬрд╛ рдФрд░ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛, рджреЗрдЦреЗрдВ:

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;
}

image
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рд░рд┐рдпреЛрдВ рдиреЗ useDispatch() рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рд╣реИред
рдЕрднреА
imageрдЗрд╕ рддрд░рд╣ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВ

@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' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдХреНрдпрд╛ рдЫреЗрдж рд╣реЛрдВрдЧреЗред

image

рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛, рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ

@рдпреЛрдпреЛ837
````
'dva' рд╕реЗ рдЖрдпрд╛рдд {useDispatch};

рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ('6:23:08 рдЕрдкрд░рд╛рд╣реНрди', рдЙрдкрдпреЛрдЧ рдбрд┐рд╕реНрдкреИрдЪ)
````
рдореИрдВ рдЗрд╕ рддрд░рд╣ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реВрдВред рдХреНрдпрд╛ рдореБрдЭреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░реЗрдбрдХреНрд╕ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?рдХрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ?

dva рдирд╡реАрдирддрдо рдмреАрдЯрд╛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ

рдЖрдк рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рд░рд┐рд▓реАрдЬрд╝ рджреЗрдЦреЗрдВ

рдореИрдВ рдЕрдкрдЧреНрд░реЗрдб рдХреЗ рдмрд╛рдж рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╢рд╛ рдХрд░рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓рд╛ рд╣реИ рдХрд┐ useDispatch рдлрд╝рдВрдХреНрд╢рди рдХреНрдпрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред

dva рд╕реАрдзреЗ react-redux useDispatch рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдк рдХреЗрд╡рд▓ react-redux рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ

image

https://react-redux.js.org/api/hooks#useddispatch

1. рдбреАрд╡реАрдП рдХреЛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ (рдореЗрд░рд╛ рд╕рдВрд╕реНрдХрд░рдг 2.6.0-рдмреАрдЯрд╛.12 рд╣реИ)
2.image

рд╕рдВрджрд░реНрдн рдкрддрд╛: 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>
  );
}

рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░ рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИ

image

рд╣реБрдХ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдкреНрд░рдмрд▓ рдЖрд╢рд╛ рд╣реИ

@ liudonghua123 рдЗрд╕ рдмрд╛рд░ dva рд╕реНрд░реЛрдд рдХреЛрдб рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд▓реНрджреА рд╕реЗ рдкреВрдЫрддрд╛ рд╣реИредрдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдЖрдкрдХрд╛ рдХреЛрдб рдбреАрд╡реАрдП рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░реЗрдбрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЖрдкрдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 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 рд╕реБрдирдХрд░ рдЦреБрд╢реА рд╣реБрдИ

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

wm3445 picture wm3445  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ufohjl picture ufohjl  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

oldfeel picture oldfeel  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mclouvem picture mclouvem  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

bjwulin picture bjwulin  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ