gadfi
@gadfi
https://gamega.org

Что я делаю не так с функциями в react redux?

Здравствуйте.
Не могу понять что я делаю не так, есть контейнер App, который отвечает за связь с state и action c компонентами

class App extends Component {

    componentDidMount() {
        this.props.vkApiActions.getFriends('')
        this.props.vkApiActions.getUser('')
    }


    render() {
        const {vkApiProps} = this.props;


        return (

            <div className="App">


                <FriendList
                    vkApiProps={vkApiProps}
                    friends={vkApiProps.friends.response.items}
                    setFriend={this.props.vkApiActions.setFriend}/>

                <Scanner
                friend={vkApiProps.user}/>
            </div>
        );
    }
}


App.propTypes = {
    appProps: PropTypes.object.isRequired,
    vkApiProps: PropTypes.object.isRequired,
    vkApiActions: PropTypes.object.isRequired

};


function mapDispatchToProps(dispatch) {
    return {
        vkApiActions: bindActionCreators(VkApi, dispatch)
    };
}


export default connect(
    (state)=> {
        return {
            vkApiProps: state.vkApi,

            appProps: state.app
        }
    },
    mapDispatchToProps
)(App)


В контейнере App функции из action нормально работают в props
например
componentDidMount() {
        this.props.vkApiActions.getFriends('')
        this.props.vkApiActions.getUser('')


но в компонентах получаю ошибку, что setFriend не является функцией
VM12897 FriendList.js:236Uncaught TypeError: _this2.props.setFriend is not a function
  • Вопрос задан
  • 189 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Glimor
develop
До рендера отрабатывается еще функции. добавь :
componentWillMount() {
    console.log(this.props.vkApiActions.setFriend);
}

добавь console.log(this.props.vkApiActions.setFriend) в рендере App, посмотри что приходит, до отправки в FriendList. Дебаж каждый шаг.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы