Redux |如何正确连接到Redux存储]]

问题描述 投票:0回答:1

我让我的redux商店正常工作,但前提是我将商店导入到动作创建者文件中,并从动作创建者调用store.dispatch()。显然,调用store.dispatch()不是一个好习惯,如果我将函数正确连接到商店,那么我可以直接调用dispatch()而不是store.dispatch()。就是说,当我尝试仅使用dispatch()时,出现错误:“找不到变量:调度”。

我的最佳猜测是,我的问题是我在此代码底部未正确使用Redux的connect()函数:

import React, {useState} from 'react'
import { connect } from 'react-redux'
import { StyleSheet, View, Text, TextInput, Image, TouchableOpacity } from 'react-native'; 
import { signup } from '../../actions/authAction'

const ApprovedScreen = () => {
  const [email, setEmail] = useState('')
  const [password, setPassword] = useState('')  

  return (
    <View>
        <TextInput 
            style={styles.textInput}
            value={email}
            onChangeText={text=>setEmail(text)}
        />
        <TextInput 
            value={password}
            onChangeText={text=>setPassword(text)}
        />
        <TouchableOpacity onPress={()=>signup({email, password})}>
          <Text>Create An Account</Text>
      </TouchableOpacity>
    </View>
  )
}

export default connect(null, { signup })(ApprovedScreen)

这是{signup}功能代码:

import axios from 'axios'
import { LOG_IN } from './types'

export function signup ({email, password}) {
    console.log('singup function ran')
        axios
        .post('https://MYAPI.com/signup', {email, password})
        .then(response => dispatch({
            type: LOG_IN,
            payload: response.data.token
        }))
        .catch(error => {
            console.log(error)
        })
} 

我让我的redux商店正常工作,但前提是我将商店导入到动作创建者文件中,并从动作创建者调用store.dispatch()。显然,调用store.dispatch()不是一个好习惯,并且...

react-native redux
1个回答
0
投票

由于您正在使用redux-thunk,因此该操作需要返回另一个函数,该函数以dispatch作为参数:

© www.soinside.com 2019 - 2024. All rights reserved.