37
loading...
This website collects cookies to deliver better user experience
const Home = () => {
const [users, setUsers] = useState([]);
const [error, setError] = useState("");
useEffect(() => {
const endpoint = "https://jsonplaceholder.typicode.com/users";
fetch(endpoint).then(response => {
return response.json();
}).then(newUsers => {
setUsers(newUsers);
}).catch(({message}) => {
setError(message);
});
}, []);
if (error) {
return (
<div>
<h2>Error</h2>
<p>{error}</p>
</div>
);
}
return (
<ul>
{users.map(({username}, key) => (
<li key={key}>{username}</li>
))}
</ul>
);
};
const Home = () => {
const [users, setUsers] = useState([]);
const [error, setError] = useState("");
useEffect(() => {
const endpoint = "https://jsonplaceholder.typicode.com/users";
// Instanciation of our controller
const controller = new AbortController();
// Attaching the signal to the request
fetch(endpoint, {signal: controller.signal}).then(response => {
return response.json();
}).then(newUsers => {
setUsers(newUsers);
}).catch(({message}) => {
setError(message);
});
// Canceling the request when the component is destroyed
return () => controller.abort();
}, []);
if (error) {
return (
<div>
<h2>Error</h2>
<p>{error}</p>
</div>
);
}
return (
<ul>
{users.map(({username}, key) => (
<li key={key}>{username}</li>
))}
</ul>
);
};
destroyed
lifecycle method.<template>
<div v-if="error">
<h2>Error</h2>
<p>{{ error }}</p>
</div>
<ul v-else>
<li v-for="(user, key) in users" :key="key">{{ user.username }}</li>
</ul>
</template>
<script>
export default {
data() {
return {
endpoint: "https://jsonplaceholder.typicode.com/users",
controller: new AbortController(),
error: "",
users: []
};
},
created() {
fetch(this.endpoint, {signal: this.controller.signal}).then(response => {
return response.json();
}).then(newUsers => {
this.users = newUsers;
}).catch(({message}) => {
this.error = message;
});
},
destroyed() {
this.controller.abort();
}
};
</script>