【发布时间】:2021-06-11 22:04:07
【问题描述】:
我知道这个问题被问了很多次,但没有一个答案对我有用。我得到了组件,它的工作是显示来自 react-redux 的用户数据,但是 userData 可以存储在 localStorage 中,并且在第一次加载网站时,这个 localStorage 被提取到 redux 状态,所以我得到了我想显示当前的首字母的错误登录用户。在将 async/await 添加到 mapStateToProps 函数 localStorage 后被获取,但我仍然收到错误消息“无法获得未定义的 0”,使用带有预设首字母的 useEffect 也会出错。这是我当前的代码:
import React, { useEffect } from 'react'
import { connect } from 'react-redux'
import PropTypes from 'prop-types'
import { ReactComponent as Person } from 'assets/person.svg'
import { ReactComponent as Add } from 'assets/add.svg'
import { ReactComponent as Settings } from 'assets/settings.svg'
import { Styled, Container, Button } from './styles'
const UserInfo = ({ initial }) => {
let initials = 'UN'
useEffect(() => {
initials = initial
}, [initial])
return (
<Styled>
{initials}
<Container>
<Button>
<Add />
</Button>
<Button>
<Person />
</Button>
<Button>
<Settings />
</Button>
</Container>
</Styled>
)
}
const mapStateToProps = async ({ user }) => {
const initial = await `${user.name[0]}${user.surname[0]}`
return initial
}
export default connect(mapStateToProps)(UserInfo)
UserInfo.propTypes = {
initial: PropTypes.string.isRequired,
}
我也尝试返回initial: initial || 'UNDEF',但仍然收到错误消息。此外,当我在 VSC 保存时不刷新浏览器时,我不会收到错误消息。如何强制我的组件等待来自 react-redux 的道具
【问题讨论】:
标签: reactjs redux async-await react-redux