html显示js返回,javascript-从fetch()返回html并显示给用户

React是非常状态的,并且由props驱动-将props传递给一个组件或由一个内部维护状态.在您的示例中,在不了解更多细节的情况下,似乎您唯一的选择是利用component state.这意味着您不能使用无状态组件,至少您要查看PureComponent或Component,即

import React,{ PureComponent } from 'react';

class Related extends PureComponent {

state = {

artists: null,error: null

}

constructor(props) {

this.super();

this.url = `/artist/${props.artistId}/related`;

}

getRelatedArtists = async () => {

try {

const res = await fetch(this.url);

const json = await res.json();

this.setState({ artists: json.data,error: null });

} catch(e) {

console.error(e);

this.setState({ error: 'Unable to fetch artists' });

}

}

renderError() {

if (!this.state.error) return null;

return (

{this.state.error}

)

}

renderArtistList() {

if (!this.state.artists) return null;

return this.state.artists.map((x,i) => (

Name: ${x.name}

Fans: ${x.nb_fans}

${name}

));

}

render() {

return (

Related artists

get {this.renderError()}

{this.renderArtistList()}

);

}

}

如果您使用的是React 16.x,那么您也许应该考虑使用Hooks.这就是作为功能组件的外观

import React,{ useState,useCallback } from 'react';

function Related(props) {

// setup state

const [artists,setArtists] = useState(null);

const [error,setError] = useState(null);

// setup click handler

const getRelatedArtists = useCallback(async () => {

try {

// fetch data from API

const res = await fetch(`/artist/${props.artistId}/related`);

const json = await res.json();

// set state

setArtists(json.data);

setError(null);

} catch(e) {

console.error(e);

setError('Unable to fetch artists');

}

},[props.artistId]);

// setup render helper

function renderArtist(artist,key) {

return (

Name: ${artist.name}

Fans: ${artist.nb_fans}

${artist.name}

);

}

// render component

return (

Related artists

get {error}

{artists && artists.map(renderArtist)}

)

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值