【发布时间】:2021-10-02 13:59:39
【问题描述】:
我有以下代码: characterActions.js
export const getCharacters = () => async(dispatch) => {
try {
dispatch({ type: FETCH_CHARACTERS_REQUEST })
const { data } = await axios.get('https://rickandmortyapi.com/api/character')
dispatch({
type: FETCH_CHARACTERS_SUCCESS,
payload: data
})
} catch (error) {
dispatch({
type: FETCH_CHARACTERS_FAIL,
payload: 'error'
})
}
}
characterReducers.js
import {
FETCH_CHARACTERS_REQUEST,
FETCH_CHARACTERS_SUCCESS,
FETCH_CHARACTERS_FAIL,
} from '../actions/characters/characterConstants'
export const characterListReducer = (state = { characters: {} }, action) => {
switch(action.type) {
case FETCH_CHARACTERS_REQUEST:
return { loading: true, characters: [] }
case FETCH_CHARACTERS_SUCCESS:
return { loading: false, characters: action.payload }
case FETCH_CHARACTERS_FAIL:
return { loading: false, error: action.payload }
default:
return state;
}
}
和 HomeScreen.js 我想在其中显示提取的字符
const HomeScreen = () => {
const dispatch = useDispatch()
const charactersList = useSelector(state => state.charactersList)
const { loading, error, characters } = charactersList
console.log(characters.results)
useEffect(() => {
dispatch(getCharacters())
}, [dispatch])
return (
<div>
{characters.results.map((character) => {
<h1 key={character.id}>{character.name}</h1>
})}
</div>
)
}
当进入浏览器时,我不断收到 ** TypeError:无法读取未定义的属性(读取“地图”)**
我正在尝试从 Rick and Morty API 获取数据。
谢谢你们!
【问题讨论】:
-
API 调用是异步的,您正在尝试在返回数据之前进行映射。
if(loading) return <Loader />.
标签: javascript reactjs api