Reactjs TypeError:Object(…)不是REACT-JS中的函数(Reducers中的问题)
您可能会认为这是同一个错误,并且多次得到了回答。我自己对此做了很多研究,但没有解决它。所以问题在于减速机,这就是我所知道的。 目前我有两个面板在我的项目,管理员和用户。由于减速器,我无法访问用户。 屏幕上显示的错误为, 现在在下面分享我的代码 位于routes文件夹中的ConfigureStoreReactjs TypeError:Object(…)不是REACT-JS中的函数(Reducers中的问题),reactjs,firebase,reducers,Reactjs,Firebase,Reducers,您可能会认为这是同一个错误,并且多次得到了回答。我自己对此做了很多研究,但没有解决它。所以问题在于减速机,这就是我所知道的。 目前我有两个面板在我的项目,管理员和用户。由于减速器,我无法访问用户。 屏幕上显示的错误为, 现在在下面分享我的代码 位于routes文件夹中的ConfigureStore export const ConfigureStore = () => { const store= createStore(rootReducer, compose( a
export const ConfigureStore = () => {
const store= createStore(rootReducer,
compose(
applyMiddleware(thunk.withExtraArgument(getFirebase)),
reactReduxFirebase(fbConfig)
)
);
return store;
}
actionSignIn.js
export const signIn = (credentials) => {
return (dispatch, getState, {getFirebase}) => {
const firebase = getFirebase();
firebase.auth().signInWithEmailAndPassword(
credentials.email,
credentials.password
).then(() => {
dispatch({ type: 'LOGIN_SUCCESS' });
}).catch((err) => {
dispatch({ type: 'LOGIN_ERROR', err });
});
}
}
reducesignin.js
const initState = {
authError: null
}
const authReducer = (state = initState, action) => {
switch(action.type){
case 'LOGIN_ERROR':
console.log('login error');
return {
...state,
authError: 'Login failed'
}
case 'LOGIN_SUCCESS':
console.log('login success');
return {
...state,
authError: null
}
UserLoginForm.js
handleSubmit = (e) => {
e.preventDefault();
this.props.signIn(this.state)
}
render() {
const { email, password, error } = this.state;
return (
<div className="container" style={{textAlign:"center"}}>
<form className="white" onSubmit={this.handleSubmit}>
<h5 className="grey-text text-darken-3">Sign In</h5>
<div className="input-field">
<label htmlFor="email">Email</label>
<input type="email" id='email' value={email} onChange={this.handleChange} />
</div>
<div className="input-field">
<label htmlFor="password">Password</label>
<input type="password" id='password' value={password} onChange={this.handleChange} />
</div>
<div className="input-field">
<button className="btn pink lighten-1 z-depth-0">Login</button>
<div className="center red-text">
{error ? (<Flex><Box><Text>{error.message}</Text></Box></Flex>) : null}
</div>
</div>
</form>
</div>
)
}
}
handleSubmit=(e)=>{
e、 预防默认值();
this.props.sign(this.state)
}
render(){
const{email,password,error}=this.state;
返回(
登录
电子邮件
密码
登录
{error?({error.message}):null}
)
}
}
并在App.js中导入ConfigureStore,如
const store = ConfigureStore();
class App extends Component {
render(){
return (
<Provider store={store}>
<BrowserRouter>
<div >
<MainComponent/>
</div>
</BrowserRouter>
</Provider>
);
}
}
const store=ConfigureStore();
类应用程序扩展组件{
render(){
返回(
);
}
}
询问是否需要进一步的信息,提前感谢您的进口产品是什么样子的?aka您如何导入
配置存储
和/或其中使用的其他项目?@JohnRuddell更新了我的问题。对不起,我指的是什么是创建存储
?你是怎么进口的?你检查过这是否正确吗?我会检查该方法中的每一项内容,getFirebase
是否正确?也许reactReduxFirebase
采用函数而不是对象?看看你的假设是什么,看看这些假设是否有错。如果看不到您正在使用的软件包以及您的导入是如何的,那么很难提供帮助。