Я отправляю необработанный HTML-код из node.js для реакции.и это было успешно.Однако, когда я пытаюсь его отобразить, они отображаются как необработанная строка, а не как элементы HTML
. Вот как я получаю строку из внешнего интерфейса:
componentDidMount() {
this.callApi()
.then(res => this.setState({ data: res.express}))
.catch(err => console.log(err));
}
callApi = async () => {
const response = await fetch('/myCart');
const body = await response.json();
if (response.status !== 200) throw Error(body.message);
return body;
};
Метод renderиз моей реакции (упрощенно) выглядит так:
render() {
return (
<div>
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<h1 className="App-title">Welcome to Shopping Center</h1>
</header>
</div>
<div className="row">
{this.state.data}
</div>
</div>
<button type="button" className="btn btn-primary Bottom-right " onClick={(e) => this.handleSubmit(e)}>
My Cart
</button>
</div>
);
}
}
В моем server.js у меня есть следующий код, обрабатывающий запрос post:
const express = require('express');
const app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.json());
//DB connections
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
app.get('/myCart', (req, res) => {
var data;
var htmlString ="";
var total = 0;
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
if (err) throw err;
var dbo = db.db("cart");
dbo.collection("items").find().toArray(function(err, result) {
if (err) throw err;
console.log("here")
data = result
for(let item of data){
//console.log("desc: " + item.desc)
//console.log("price: " + item.price)
htmlString += "<div>" + item.desc + "</div>" + "<div>" + item.price + "</div>"
total += item.price
}
console.log("total is" + total)
htmlString +="<div>" + total + "</div>"
console.log(htmlString)
res.send({express: htmlString})
db.close();
});
});
});
Почему не реагирует renderстрока в виде элементов HTML, а скорее необработанная строка?