Свойства не определены в компоненте Functional React - PullRequest
0 голосов
/ 06 августа 2020

Я использую шаблон Redux, и у меня есть функциональный компонент, в котором мне нужно вызывать действия redux, но мои реквизиты всегда не определены

const GetCustomers= (props) => {

  useEffect(() => {
    //Props is always undefined?
    let test = props.actions.getSomething();   
  });

  return (
    <>Hello</>
);};
GetCustomers.propTypes = {
  actions: PropTypes.object.isRequired
};

export default GetCustomers;

Затем у меня есть еще один js файл для mapDisplayToProps


const mapStateToProps = (state) => state.reducer;
const mapDispatchToProps = (dispatch) => bindActionCreators(actions, dispatch);

export default connect(mapStateToProps, mapDispatchToProps)(GetCustomers);

Я не уверен, почему свойства не определены и не имеют никаких действий.

1 Ответ

0 голосов
/ 06 августа 2020

Избавьтесь от mapStateToProps и mapDispatchToProps вместо

Для выбора части state сделайте это

import {useSelector} from 'react-redux'

const GetCustomers= (props) => {
yourStateName = useSelector(state => state.yourState)
//OR if you have multiple reducers combined use this
yourStateName = useSelector(state => state.reducerYourStateBelongsTo.yourState)
}

Для Dispatching действий сделайте это

import {useSelector} from 'react-redux'
import {yourAction} from '../path'
const GetCustomers= (props) => {
const dispatch = useDispatch()
dispatch(yourAction(args if any pass it here))
}

Рекомендуется использовать хуки useSelector и useDispatch, если вы используете функциональные компоненты

...