javascript - 传递 node.js 字符串以响应前端
问题描述
我在 node.js 后端功能上有这个:
app.get('/returnTestValues', (req, res) => {
var results = "hello friends"
res.send(results);
})
然后在前端,(反应),我有这个:
import React, { Component } from 'react'
import { Link } from 'react-router-dom'
import styled from 'styled-components'
const Collapse = styled.div.attrs({
className: 'collpase navbar-collapse',
})``
const List = styled.div.attrs({
className: 'navbar-nav mr-auto',
})``
const Item = styled.div.attrs({
className: 'collpase navbar-collapse',
})``
// this.setState = { results: null };
fetch('http://localhost:3000/returnTestValues', {
method: 'POST',
})
.then((response) => {
console.log('response is: ' + response);
response.json().then((results)=>this.setState({ results: results }))
}).then(results => {
// let response = await response.json();
this.setState({ results: results });
console.log('results are' + results)
});
// function
class Links extends Component {
render() {
return (
<React.Fragment>
<Link to="/" className="navbar-brand">
{this.state.results}
</Link>
<Collapse>
<List>
<Item>
<Link to="/movies/list" className="nav-link">
List Movies
</Link>
</Item>
<Item>
<Link to="/movies/create" className="nav-link">
Create Movie
</Link>
</Item>
</List>
</Collapse>
</React.Fragment>
)
}
}
export default Links
以上是整个文件的完整代码。没有一行遗漏。但是,当我这样做时,它会说:
Unhandled Rejection (TypeError): Cannot read property 'setState' of undefined
我猜也许 setState 之前没有定义,并且在我定义它之前它没有将它视为可以使用的东西?
还有,console.log('response is: ' + response);
退货[object Response]
全新的反应,不知道如何做到这一点。谢谢您的帮助
解决方案
将您的 fetch 移动到componentDidMount
您的类组件内部
class Links extends Component {
state = {
results: []
}
componentDidMount() {
fetch('http://localhost:3000/returnTestValues', {
method: 'POST',
})
.then((response) => {
console.log('response is: ' + response);
return response.json()
}).then(results => {
// let response = await response.json();
this.setState({ results: results });
console.log('results are' + results)
});
}
render() {
return (
<React.Fragment>
<Link to="/" className="navbar-brand">
{this.state.results}
</Link>
<Collapse>
<List>
<Item>
<Link to="/movies/list" className="nav-link">
List Movies
</Link>
</Item>
<Item>
<Link to="/movies/create" className="nav-link">
Create Movie
</Link>
</Item>
</List>
</Collapse>
</React.Fragment>
)
}
}
export default Links
推荐阅读
- qt - QT:实现QWidget的子类并生成dll时的问题
- python - 如何在 Python 中求解一个几乎是三对角矩阵?家庭作业
- c# - OnTriggerEnter2D 被未标记为触发器的碰撞器触发?
- http - 使用 Http 请求/cURL 在 Board 中创建项目
- node.js - 无法使用 `fetch-mock-jest 1.5.1` lib 模拟 fetch 调用
- angular - 以角度加载powerbi iframe
- azure-monitor - 将 Azure SQL 写入 Azure Monitor 或 Azure Dashboard 的日志?
- powershell - Neo4j with PowerShell 和 Neo4j as a service 有什么区别?
- javascript - 纱线控制台脚本中是否有 npm 变量(`npm_config_`)的类似物?
- inno-setup - InnoSetup 重命名安装文件夹并运行 Exe