Я делаю вызов API и возвращаю что-то похожее на это:
{
"Response": {
"profile": {
"data": {
"userInfo": {
"membershipType": 4,
"membershipId": "4611686018483730446",
"displayName": "DisplayName420"
},
},
"privacy": 1
}
},
"ErrorCode": 1,
"ThrottleSeconds": 0,
"ErrorStatus": "Success",
"Message": "Ok",
"MessageData": {}
}
Я хочу, чтобы строка, отображаемая в моем DOM, определялась на основе значения ответа API.
Например, поскольку ответ displayName
возвращает значение 4
, я хочу иметь возможность отображать в DOM строку Battle.Net
.
Точно так же, если бы значение displayName
было 5
, я бы хотел, чтобы оно отображало строку Playstation Network
.
Это возможно? Я использую React и вызываю API через функцию выборки. Возвращаемые данные представляют собой объект JSON.
Это мой код до сих пор:
import React from 'react';
import ReactDOM from 'react-dom';
import axios from 'axios';
import Auth from './api/Auth'
class APICall extends React.Component {
state = {
data: null,
loading: false
};
componentDidMount() {
var baseURL = 'https://www.bungie.net/Platform';
var headers = {
headers: {
'X-API-KEY': '5e232bf8f19349498081bdec1d9a924b'
}
};
this.setState({loading: true});
axios.get(baseURL + '/Destiny2/4/Profile/4611686018483730446/?components=100', headers)
.then(response => this.setState({data: response.data, loading: false}))
}
render() {
const { data } = this.state;
console.log(data);
return (
<div>
{this.state.loading
? <p className={"text-white"}>"Loading..."</p>
:
<div>
<p className={"text-white"}>{data && data.Response.profile.data.userInfo.membershipType}</p>
</div>}
</div>
);
}
}
ReactDOM.render(<APICall />, document.getElementById('root'));
ReactDOM.render(<Auth />, document.getElementById('signin'));
as the displayName response returns a value of 4 I want to be able to render to the DOM a string of Battle.Net
откуда вы знаете, что 4 это Battle.Net
? Вы должны указать это в своем ответе
@Keith, не могли бы вы привести пример того, как это может работать? На данный момент у меня нет опыта работы с React или JS.
@Vencovsky В данный момент у меня нигде нет этих значений, я просто использую их в качестве примера, я надеялся, что кто-нибудь может указать мне направление записи и привести пример того, как значения должны храниться и т. д.
Да, вы можете это сделать. Самый простой способ, вероятно, состоит в том, чтобы иметь объект, который представляет собой таблицу поиска для различных строк, а затем извлекать правильную строку на основе числа. Например:
// somewhere, perhaps at the top of the file (outside the class)
const stringTable = {
1: 'foo',
2: 'bar',
3: 'baz',
4: 'Battle.Net',
5: 'Playstation Network`
}
// later, in render:
<p className={"text-white"}>{data && stringTable[data.Response.profile.data.userInfo.membershipType]}</p>
Да, просто создайте себе карту для значений. Или даже простой объектный литерал подойдет.