我可能不会很好地解释这一点,因为这很混乱,但是我在React应用程序中有一个项目列表,希望人们能够将其标记为最喜欢的项目。当该人进入其个人资料时,他们将能够看到他们喜欢的项目的列表。因此,当我引用它时,我基本上想要users.currentUser.favorites
。
我不确定如何将“收藏夹”特别添加为当前用户的子级(已通过Firebase认证),或者如何在新条目“收藏夹”时获取并更新它。
我要使用的数据库结构,只是我希望用户拥有一个“ favoritePokemon”列表:
我尝试将列表添加到当前登录用户,但是当我尝试使用var myUserId = firebase.auth().currentUser.uid;
指定当前登录用户时,它说“ currentUser”未定义,因此我不确定到底如何我应该以该用户的数据为目标。
在我的App.js中设置当前用户
componentWillMount() {
let data = jsonData.data.results;
let id = 0;
data.forEach(item => {
id = id + 1;
item.id = id;
});
this.setState({
allPokemonData: data.slice(0, 151),
});
auth.onAuthStateChanged(currentUser => {
this.setState({ currentUser });
});
}
将currentUser作为道具传递给我的组件:
render() {
const { allPokemonData, currentUser } = this.state;
return (
<div className="app-wrapper">
<Header currentUser={currentUser} />
<Route
exact
path="/"
component={Home}
/>
<Route
exact
path="/allpokemon"
render={props => <PokemonList allPokemon={allPokemonData} currentUser={currentUser} />}
/>
<Route
exact
path={`/pokemon/:id`}
render={props => <PokemonDetails {...props} allPokemon={allPokemonData} />}
/>
<Route
path="/profile"
render={props => <Profile currentUser={currentUser} />}
/>
</div>
)
}
之后,我尝试在组件中设置引用:
if (this.props.currentUser) {
this.usersRef = database.ref('users/' + this.props.currentUser.uid);
}