我正在创建一个Web应用程序,该应用程序将允许用户在屏幕上拖动和拖动多个片段,每个片段都包含单独的特定数据。如果用户想在屏幕上添加更多作品,他们只需单击一个按钮,就会出现另一作品。我使用了React DND(Drag and Drap)库来保持我的组件之间的分离,到目前为止,一切都还不错。问题在于在屏幕上添加更多作品的动态功能。当前(在下面的子代码中),我正在获取旧的状态对象,执行浅表复制,并将新创建的对象与先前存在的状态对象合并,并在完成后更新状态。但是,每次执行此操作时,一切正常(在屏幕上生成新的片段),直到我去移动一个新片段,并出现以下错误:
在现有状态转换期间(例如在内
render)无法更新。渲染方法应该纯粹是props和state的函数。
我该如何摆脱这个错误,并更新状态对象。
注意:按钮(在下面的屏幕快照中)显示State对象中对象数量的当前计数。所以下面我在状态中添加了7个对象
import React, { Component, PropTypes } from 'react';
import Header from '../../components/Header/header';
import Footer from '../../components/Footer/footer';
import Student from '../../components/box1/box1';
import Box from '../../components/box2/box2';
import { DragDropContext } from 'react-dnd';
import HTML5Backend from 'react-dnd-html5-backend';
require('./home.css');
var Home = React.createClass({
getDefaultProps: function(){
return{ count: 3 }
},
getInitialState: function(){
return{ count: this.props.count }
},
add: function(){
this.setState({ count: this.state.count + 1 });
},
render() {
return (
<div id="main">
<Box …Run Code Online (Sandbox Code Playgroud) 一旦当前登录的用户到达我们的 DotNetNuke 页面上托管的我的应用程序,我就会尝试获取他们。该应用程序是用 React.JS 构建的,我在 HTML 模块内渲染它。当用户到达应用程序时,我将执行 ComponentDidMount 方法调用,并向我的 .ascx 文件发起 AJAX 请求以获取当前用户。(ComponentDidMount 仅在应用程序加载时自动调用一次 - 对于所有阅读本文的 .NET 用户)。进入 ASCX 文件后,我将执行下面的代码,但只获得“user”的输出。我是否应该调用一个类来在另一个文件中使用此令牌?我可以在下面的代码中做什么来让当前用户登录到该站点(遗憾的是,DNN 不使用会话变量,仅使用令牌)。
.ascx 代码:
<%
Response.Write("user " & [User:UserName])
%>
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用请求的 fetch API 在我的服务器上获取数据,但该请求需要永远处理(它最终会处理)。我使用 React 作为我的视图,Express 为我的页面提供服务。我在下面列出了我的 Express 和 JSX 代码。是否了解为什么会发生这种情况(“已安装”消息按预期立即记录,但 fetch API 在延迟后记录)?
表达:
app.use('/test',function(){
console.log('connected');
})
Run Code Online (Sandbox Code Playgroud)
反应.JS:
componentDidMount(){
console.log('mounted');
fetch('./test').then(function(response){
console.log(response);
}).catch(function(error){
console.log(error);
})
}
Run Code Online (Sandbox Code Playgroud)