const App = () => {
const [symbol, setSymbol] = useState([]);
const [loading, setLoading] = useState(false);
const getSymbolData = async () => {
try{
const data = await axios.get("https://cloud.iexapis.com/stable/stock/market/batch?symbols=PGX,MORL,EMLC,GYLD");
console.log(data);
setSymbol(data.data);
} catch (e) {
console.log (e);
}
};
const columns = [
{dataField: "price", text: "Current Price"},
{dataField: "symbol", text: "Symbol" },
{dataField: "companyName", text : "Company Name"}
];
useEffect (() => {
getSymbolData();
}, []);
return (
<div className="App">
<BootstrapTable
keyField= "symbol"
data= {symbol}
columns={columns}
pagination={paginationFactory()}
/>
</div>
);
};
export default App;
JSON results -
Console output:
Blockquote
{data: {…}, status: 200, statusText: "", headers: {…}, config: {…}, …} config: {url: "https://cloud.iexapis.com/stable/stock/market/batc…s,quote&token=", method: "get", headers: {…}, transformRequest: Array(1), transformResponse: Array(1), …} data: {PGX: {…}, MORL: {…}, EMLC: {…}, GYLD: {…}, IPFF: {…}, …} headers: content-type: "application/json; charset=utf-8" proto: Object request: XMLHttpRequest {readyState: 4, timeout: 0, withCredentials: false, upload: XMLHttpRequestUpload, onreadystatechange: ƒ, …} status: 200
Based on the error result, you are passing an object to data prop at
<BootstrapTable data={symbol}>
which expects an arrayYour axios response seem to be a big object, and this prop expects an array of objects
at first its defined as an array:
but when you setState it becomes an Object (in view of the JSON response you showed) and that's when the error occurs
see examples here of how data is structured to work with BoostrapTable