我正在使用 https://jsonplaceholder.typicode.com/users 中的axios进行一些简单的提取,并且我正在使用redux来存储应用程序的状态。从URL上传中,我想在下拉列表中获取所有名称。但是从2天起给我这个错误:
TypeError:无法读取未定义的属性“ map”。
现在,如果您以前看过,我将在下面提供一些代码。
这是行动,我认为可以。
>>> a = 'ABC, DEF, GHIJ'
>>> a.split(',')
['ABC', ' DEF', ' GHIJ']
>>> a = a.split(',')
>>> c = '7.00, 8.00, 9.00'
>>> c = c.split(',')
>>> e = '7.20, 8.20, 9.20'
>>> e = e.split(',')
h = {}
class Profile:
def __init__(self, *args):
self.one = h['info1']
self.two = h['info2']
self.three = h['info3']
>>> e = []
>>> for i in range(len(a)): # Takes splitted info above, combines it, and adds it to a dictionary(Ex: h['info1'] = ABC, h['info2'] = 7.00, h['info'] = 7.20)
h['info1'] = a[i]
h['info2'] = c[i]
h['info3'] = e[i]
e.append(Profile(h['info1'], h['info2'], h['info3'])) # Adds each combined list index to its own individual class
这是减速器,我认为这是错误:
export const getAuthors = () => {
return (dispatch) => {
axios.get('https://jsonplaceholder.typicode.com/users')
.then((response) => {
dispatch({
type: GET_AUTHORS,
payload: response.data
})
})
.catch(e => console.log(e))
}}
以下是显示错误的功能组件:
export default (state = initialState, action) => {
console.log("ACTION", action.payload);
switch (action.type) {
case GET_AUTHORS:
return {...state, authors: action.payload}
default:
return state;
}
}
以及下面的类组件:
const AddPostModal = ({authors, authorName}) => {
return(
<select
value={authorName}
onChange={handleChangeAuthor}
{
authors.map((author, index) => {
return (
<option key={index}> {author.name} </option>
)
})
</select>
)
}
export default AddPostModal;
如果有人有解决方案,请告诉我,因为您会节省我的时间。预先非常感谢。
答案 0 :(得分:0)
API异步返回结果,因此您可以做的是先对null
进行简单的authors
检查。从技术上讲,.map()
仅可在数组上调用,而null
则将您在解决方案中看到的错误引发。
尝试以下操作:
<select value={authorName}
onChange={handleChangeAuthor}>
{
authors && authors.map((author, index) => {
return <option key={index}> {author.name} </option>
})
</select>
希望对您有帮助!
答案 1 :(得分:0)
根据情况,您Post
组件中的this.props.author
可以是null
或undefined
。因此,我更喜欢仅在AddPostModal
不是this.props.author
或null
的情况下才打电话给undefined
,因为this.props.author
在Post
组件上:
const mapStateToProps = (state) => {
return {
authors: state.authorName.authors || []
};
}
答案 2 :(得分:0)
首先,请确保您的initialState.authors
是[]
。其次,确保state.authorsName
中的mapStateToProps
正确指向authorName
减速器的状态。否则,它可能应该像authors: state.authors
。