API의 사용자 목록을 렌더링하는 반응 요소가 있습니다. 나는 그렇게처럼 내 라이프 사이클 후크 방식으로 내 행동 작성자를 호출 오전 :감속기의 데이터를 보내기 전에 컴포넌트 호출 작업 생성자를 보낼 수 있습니다.
componentWillMount() {
this.props.fetchUsers();
}
내가 확인하고 데이터가 반환하고 올바른 형식으로 감속기에 파견되고있다. 내 구성 요소에서 이러한 사용자를 렌더링하려고 할 때, 아무것도 페이지에 표시되고 있지 :
renderUser(user) {
return (
<div className="card card-block">
<h4 className="card-title">{user.name}</h4>
<p className="card-text">{user.company.name}</p>
<a className="btn btn-primary" href={user.website}>
Website
</a>
</div>
);
}
render() {
return (
<div className="user-list">{this.props.users.map(user => this.renderUser)}</div>
);
}
내가 오류 또는 경고를 얻을, 내 구성 요소를 검사 한 후 페이지에 렌더링되는, 그러나 비어 콘텐츠의 몇 가지 콘솔 로그를 만들려고 할 때 구성 요소 WillMount()가 축소 기보다 먼저 호출되는 것 같습니다. 이유는 알 수 없습니다. 이것은 fetchUsers() 액션 생성자를 호출 한 후 내 사용자 배열이 비어 있음을 의미합니다.
편집 : 소품 내가 구성 요소의 상단에 내 모든 행동을 가져
function mapStateToProps(state) {
return { users: state.users };
}
export default connect(mapStateToProps, actions)(UserList);
에 상태와 행동 제작자 매핑. 내 감속기는 작업 작성자의 페이로드 (배열)를 앱 상태에 추가합니다.
는
export default function(state = [], action) {
switch (action.type) {
case FETCH_USERS:
return [...state, action.payload.data];
}
return state;
}
내 행동 작성자는 단순히 GET 요청을하게하고, 감속기로를 보냅니다
export function fetchUsers() {
const request = axios.get("https://jsonplaceholder.typicode.com/users");
return {
type: FETCH_USERS,
payload: request
};
}
편집 2 :받은 JSON 데이터의
예 :
어디서 사용자를 소품으로 매핑합니까? –
debbuging을 위해 'redux'크롬 확장을 사용하십시오. [참조] (https://chrome.google.com/webstore/detail/redux-devtools/lmhkpmbekcpmknklioeibfkpmmfibljd?hl=ko) –
이 확장 프로그램에 대한 링크가 있습니까? – Leth