반응의 공리에서 반응 상태를 설정하는 방법
get response 상태를 axios로 설정하려면 어떻게 해야 합니다.
axios.get(response){
this.setState({events: response.data})
}
구문 오류가 있습니다.대신 이걸 써보세요
var self = this;
axios.get('/url')
.then(function (response) {
console.log(response);
self.setState({events: response.data})
})
.catch(function (error) {
console.log(error);
});
//the rest of the code
var a = 'i might be executed before the server responds'
여기에서는, 몇개의 주의사항이 있습니다.
axios.get
는 비동기 함수이며, 이는 나머지 코드가 실행됨을 의미합니다.그리고 서버의 응답이 오면 함수는 다음 주소로 넘어갑니다.then
실행됩니다.의 반환값axios.get('url')
는 약속 객체라고 불립니다.자세한 내용은 이쪽에서 확인하실 수 있습니다.this
키워드는, 발신처에 따라 값이 다릅니다.this
에this.setState
컨스트럭터 오브젝트를 참조할 필요가 있습니다.또, 콜을 발신했을 때에,this
함수의 내부에서는, 그 함수는window
물건.그래서 배정했어this
변수로self
자세한 내용은 여기를 참조해 주세요.
프로 팁:
ES6를 사용하는 경우 화살표 기능(자체 기능이 없음)을 사용할 수 있습니다.this
를 사용합니다.this.setState
할당하지 않고this
변수에 대한 자세한 내용은 여기를 참조하십시오.
axios.get('/url')
.then((response) => {
console.log(response);
this.setState({events: response.data})
})
.catch((error)=>{
console.log(error);
});
다음은 에러 처리, 재시도, 로딩 등 데이터를 가져오기 위해 일반적으로 사용되는 베스트프랙티스를 포함한 완전한 예입니다.https://codesandbox.io/s/rm4pyq9m0o이것에 의해, 유저 익스피리언스가 향상됩니다.코드를 수정하고 그에 대한 더 많은 통찰력을 얻기 위해 플레이하는 것이 좋습니다.
"이것"은 공리 안에서 다르기 때문에 효과가 없습니다.공리 안에 있는 "this"는 공리 객체를 가리키며 반응 구성요소가 아닙니다.이 문제는 .bind를 사용하여 해결할 수 있습니다.
또한 공리도 올바르게 사용되고 있지 않습니다.
아마 이렇게 생겼을 거예요
axios.get("/yourURL").then(function(response) {
this.setState({ events: response.data });
}.bind(this));
또는 es6를 사용하는 경우 화살표 함수에 대한 함수를 서브아웃하여 바인딩 없이 동일한 효과를 얻을 수 있습니다.
axios.get("/yourURL").then(response => {
this.setState({ events: response.data });
});
이 노드를 사용해 보십시오.js
axios.get(`https://jsonplaceholder.typicode.com/users`)
.then(res => {
const persons = res.data;
this.setState({ persons });
})
반응 js를 사용하는 경우 공리를 사용하는 것보다 먼저 성분으로 가져옵니다.
다음과 같습니다.
import React from 'react';
import axios from 'axios';
export default class PersonList extends React.Component {
state = {
persons: []
}
componentDidMount() {
axios.get(`https://jsonplaceholder.typicode.com/users`)
.then(res => {
const persons = res.data;
this.setState({ persons });
})
}
render() {
return (
<ul>
{ this.state.persons.map(person => <li>{person.name}</li>)}
</ul>
)
}
}
나는 리액션을 배울 때 과거에 했던 것과 비슷한 약속을 다룬 적이 있다.제가 한 일은 API 콜을componentDidMount
method 및 상태를 초기값으로 설정합니다.데이터를 가져오는 동안 로더를 사용했습니다.
componentDidMount() {
const self = this;
axios.get(response){
self.setState({ events: response.data });
}
지금으로서는 checkenrode가 말한 것과 비슷한 것을 사용하고 싶습니다.
다음과 같은 작업을 수행합니다.
var self= this; // self will now be referred to your component
axios.get("http://localhost:3001/get_user?id=" + id)
.then(function (response) {
if(response.data.rows != null)
user_detail = response.data.rows;
console.log(response);
self.setState({email: user_detail.name, name: user_detail.name})
})
언급URL : https://stackoverflow.com/questions/41194866/how-to-set-state-of-response-from-axios-in-react
'programing' 카테고리의 다른 글
wordpress로 스크립트를 큐잉할 때 get_stylesheet_directory_uri()와 get_template_directory_uri()의 차이점은 무엇입니까? (0) | 2023.02.17 |
---|---|
Oracle에서의 뷰란? (0) | 2023.02.17 |
AJAX 및 브라우저의 뒤로 버튼 (0) | 2023.02.17 |
테마의 템플릿 파일을 사용하도록 플러그인을 편집하는 방법 (0) | 2023.02.17 |
반응 + 웹 팩: 'process.env'가 정의되지 않았습니다. (0) | 2023.02.17 |