gpt4 book ai didi

javascript - 无法在 firebase 重定向结果中使用 Redux props

转载 作者:行者123 更新时间:2023-12-02 22:05:31 25 4
gpt4 key购买 nike

我正在尝试在 React + Redux + Firebase 中构建 Google 身份验证。我想在谷歌身份验证后创建用户。但在 Firebase 上重定向后,this.props.createUser() 无法正常工作。

TypeError: Cannot read property 'props' of undefined

app/src/components/home.js

import React, { Component } from "react";
import { connect } from "react-redux";
import firebase from "../config/firebase";
import { createUser } from "../actions";

class Home extends Component {
constructor(props) {
super(props);

this.state = {
user: null
};
}

async componentWillMount() {
console.log("this", this.props);
firebase.auth().onAuthStateChanged(user => {
this.setState({ user });

if (user) {
this.props.history.push("/user/settings");
}
});

firebase
.auth()
.getRedirectResult()
.then(function(result) {
if (result.credential) {
var token = result.credential.accessToken;
console.log("token", token);
}
var user = result.user;
// Successfully got a user but type error in below
this.props.createUser(user);
})
.catch(function(error) {
console.log("error", error);
});
}

onLogin = () => {
const provider = new firebase.auth.GoogleAuthProvider();
firebase.auth().signInWithRedirect(provider);
};

render() {
return (
<button className="btn btnPrimary" onClick={this.onLogin}>
<span>Google Signin</span>
</button>
);
}
}

function mapStateToProps({ user }) {
return { user: user };
}

export default connect(mapStateToProps, { createUser })(Home);

app/src/actions/index.js

import firebase from "../config/firebase";

export function createUser(user) {
console.log('user', user)
}

最佳答案

由于您使用 function 关键字声明回调,因此函数内的 this 指的是函数本身,而不是您在其上声明 componentWillMount 的类 方法。

最简单的解决方案是使用粗箭头表示法,就像您在其他地方所做的那样:

firebase
.auth()
.getRedirectResult()
.then((result) => {
if (result.credential) {
var token = result.credential.accessToken;
console.log("token", token);
}
var user = result.user;
// Successfully got a user but type error in below
this.props.createUser(user);
})

另请参阅有关问题原因的答案以及其他解决方案:How to access the correct `this` inside a callback?

关于javascript - 无法在 firebase 重定向结果中使用 Redux props,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59726806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com