javascript - Reactjs绑定问题
问题描述
如何在 ReactJs 中从 signalR 请求和接收数据并在 ComponentDidMount 中绑定数据我正在使用 react 框架来设计带有 SignalR 的视图。我能够连接到 SignalR 服务器并获取数据,但如果我需要在视图上加载数据,我将无法在 ComponentDidMount 上加载数据。如果我请求 ComponentDidMount 视图上的数据显示为空白。在视图加载时,我提到了一个图标 (i) 并在视图加载后单击,然后数据被绑定。
import React, { Component } from 'react';
import { Button, Card, CardBody, CardFooter, CardHeader, Col, Row, Collapse, Fade } from 'reactstrap';
import {Redirect} from 'react-router-dom';
import {hub} from '../../SignalRHub';
class Users extends Component {
constructor(props) {
super(props)
this.state = {
userId:0,
userName:'',
usersList:[]
};
}
LoadUsersList()
{
this.refs.child.userListRequest();
}
receiveUserList(userlist)
{
this.setState({usersList: userlist});
}
render(){
if(this.state.redirecttoUsers)
{
const route='/UsersInfo/'+this.state.userId;
return (<Redirect to={route} />)
}
return (
<form onSubmit={this.handleSubmit}>
<div className="animated fadeIn">
<SignalRHub ref="child" receiveUserList={this.receiveUserList.bind(this)} />
<a href="#" className="card-header-action btn btn-setting" onClick={(event)=>this.LoadUsersList(event)}><i className="fa fa-info-circle"></i></a>
<Row>
{this.state.usersList.map((e, key) => {
return (
<Col className="col-3 .col-sm-3">
<div class="container">
<Card className="border-primary crd" onClick={(event)=>this.userFingerInfoHandle(event,e)}>
<CardHeader>
{e.userName}
<div className="card-header-actions middle upper">
<a href="#" className="card-header-action icon btn btn-setting" onClick={(event)=>this.userFingerInfoHandle(event,e)}><i className="fa fa-info-circle"></i></a>
<a className="card-header-action img btn btn-setting" onClick={(event)=>this.userRemovalHandle(event,e.id)}><i className="fa fa-trash"></i></a>
</div>
</CardHeader>
<CardBody align="center">
{e.userName}
</CardBody>
</Card>
</div>
</Col>
)})
}
</Row>
</div>
</form>
);
};
}
export default Users;
解决方案
在使用中更新状态componentDidMount
并引用所有必要的数据render
this.state
原因很简单。
React
决定在默认情况下更改props
或时更新 DOM 树state
,因此只有更改其中任何一个才能更新渲染,除非您实现自己的shouldComponentUpdate
推荐阅读
- java - 我想从数据库中填充数据并使用 Angular 前端和 Spring Boot 后端将其放入下拉列表中
- windows - 使用 FFMPEG 进行 DirectShow AJA 音频捕获
- python - 我需要防止 python 脚本运行两次
- javascript - 基于首字母的Javascript字符串拆分和组织
- python - 如何交换具有相同文件扩展名但具有不同扩展名的不同文件的文件并维护目录结构?
- jsf - 我如何解决primefaces中的头部目标
- react-native - 在列表中按下时更改一种按钮颜色
- mysql - 如何在 SQL 中将 avg 函数的值显示到小数点后两位?
- javascript - eslint 'html-webpack-plugin' 应该列在项目的依赖中,而不是 devDependencies 中。(导入/无外部依赖项)
- java - 为没有 Maven 的 spring 项目添加外部 Spring jar