小编Fli*_*ion的帖子

React.js - 在状态中为数组添加值的最佳方法是什么

我有一个状态数组,让我们说这个.state.arr.我想在此属性中添加一些内容,然后更改一些属性.

选项1

onChange(event){
    this.state.arr.push('newvalue');
    ...
    this.setState({some:'val',arr:this.state.arr})
}
Run Code Online (Sandbox Code Playgroud)

选项2

onChange(event){
    var newArr = this.state.arr;
    ...
    newArr.push('newvalue');
    ...
    this.setState({some:'val',arr:newArr})
}
Run Code Online (Sandbox Code Playgroud)

所以..我知道this.state应该被视为不可变的.但是可以像在选项1中那样使用它,我仍然从中设置状态,或者我需要使用类似选项2的东西,因此总是首先在内存中复制

memory state reactjs

48
推荐指数
8
解决办法
13万
查看次数

你能用try/catch块捕获React.js应用程序的所有错误吗?

我做了一个没有正常运行的反应应用程序,并且使用它的人注意到偶尔会发生一些奇怪的错误.我不知道为什么或发生了什么,也无法重现它.

所以我想知道是否有办法将整个应用程序或部分应用程序包装在try/catch块中,以便我可以将错误发送到服务器上的错误日志中?

到目前为止我所读到的只是你可以将整个渲染函数包装在try/catch中,但由于用户的交互,这不能捕获任何错误吗?

try-catch reactjs

33
推荐指数
4
解决办法
3万
查看次数

如何设置grunt-babel来转换整个目录

所以我在我的gruntfile中有这个:

gruntConfig.babel = {
        options: {
            sourceMap: true
        },
        dist: {
            files: {
                "dist/server.js": "src/*.js"
            }
        }
    };
Run Code Online (Sandbox Code Playgroud)

这正确地转换了src中的所有js文件,但每次都会覆盖dist/server.js.

这一定非常简单,但我似乎无法弄清楚如何将其写入不同的输出文件,每个源文件一个.

gruntjs babeljs

20
推荐指数
1
解决办法
1万
查看次数

使用touch.js的触摸支持拖放

如何通过支持触摸事件为Facebook的react.js实现拖放?

有几个关于react.js拖放的问题文章,但是它们似乎都没有提到触摸事件,并且没有一个演示在我的手机上工作.

总的来说,我想知道什么是最简单的:尝试使用已经支持触摸的现有d&d库来实现这一点,但可能需要一些工作才能与react一起正常协同工作.或者尝试使用任何反应d&d示例,并使它们与触摸一起工作(看到这个问题,可能不是很简单?)

drag-and-drop touch reactjs

17
推荐指数
2
解决办法
1万
查看次数

在chrome devtools中,在我所有的tsx源文件中,语法突出显示和智能感知不再起作用

对于具有.tsx扩展名的文件,调试功能对我而言不再起作用。

调试.ts文件时,它正常工作: 在此处输入图片说明

源地图从其仍在工作时就保持不变。但是.tsx文件现在看起来是这样的。所有代码都是黑色的,而不是样式化的,以指示关键字/字符串等之间的差异。而且,在调试(确实有效)时,我无法将变量悬停以查看其值。

在此处输入图片说明

任何想法如何解决这个问题?

编辑:我曾经通过发送内容类型标头解决此问题,如下面的答案所述。但是,即使我在新标签页中打开源文件时,问题又回到了现在,我可以看到Content-Type为“ application / javaScript”

google-chrome-devtools typescript tsx

15
推荐指数
1
解决办法
456
查看次数

逐步消除此间接左递归

我已经看到这个算法应该可以用来删除所有左递归.然而,我遇到了这个特殊语法的问题:

A -> Cd
B -> Ce
C -> A | B | f
Run Code Online (Sandbox Code Playgroud)

无论我尝试什么,我最终都在循环中或使用仍然间接留下递归的语法.

在这个语法上正确实现这个算法的步骤是什么?

parsing context-free-grammar left-recursion

12
推荐指数
2
解决办法
2万
查看次数

Javascript:在循环时为数组添加值,然后也将包含在循环中

对不起,如果这是一个dupplicate,似乎无法找到它.

var a = [1,2,3,4];
a.forEach(function(value){
  if(value == 1) a.push(5);
  console.log(value);
});
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种方法(任何类型的循环或数据类型),这样它将在循环期间输出1 2 3 4 5(或以任何顺序,只要所有5个数字都在那里)

javascript arrays loops

11
推荐指数
2
解决办法
3万
查看次数

React 0.14.2 error - Super expression必须为null或函数

从0.13.2更新到0.14.2后,我收到此错误:

Uncaught TypeError: Super expression must either be null or a function, not object

几个 问题已经存在.最常见的错误是拼写错误的React.component(没有大写字母C).另一个是尝试使用版本<0.13的ES6类.

但是我已经成功地使用了React 0.13.x的ES6类,并且我到处使用大写C,并且记录React.Component似乎给出了一个合适的结果(函数ReactComponent(...))

经过一些搜索,我做了这3个测试用例,其中2个抛出了相同的错误(没有我理解为什么),而有一个没有.看似建议课程发生的顺序是一个问题?

测试1(抛出错误)

//Test.jsx
var React = require('react');
var ReactDOM = require('react-dom');
var BaseComponent = require('./BaseComponent');

class Test extends BaseComponent {
    render() { return <div>Test worked</div>; }
}
ReactDOM.render(<Test />, document.getElementById('test'));

//BaseComponent.jsx
var React = require('react');
console.log(React.Component); // <--- logs "function ReactComponent(...)" !!
export default class BaseComponent extends React.Component { }
Run Code Online (Sandbox Code Playgroud)

测试2(将BaseComponent置于Test.jsx下,仍然出错)

//Test.jsx
var React = require('react');
var ReactDOM …
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6 reactjs webpack babeljs

11
推荐指数
1
解决办法
1万
查看次数

需要来自不同的模块 - 单独生成 - webpack包

我正在构建一个应用程序,可以根据需要加载各种模块(由不同的webpack配置生成的其他包).该BaseModule负责,知道什么时候加载的包和出口一些默认的类一样BaseUtils.模块本身不知道可能需要加载的所有可能的模块/包.

TestModule是运行时按需加载BaseModuleTestModule希望使用的模块之一BaseUtils.

现在的问题是:是否有可能require('basemodule/BaseUtils')TestModule,它有自己的webpack.config.js文件中,BaseModule列出外部?也就是说,有没有办法让生成的testmodule bundle重用生成的basemodule bundle中可用的模块?或者BaseModule是否需要导出到全局变量?

bundle module webpack

11
推荐指数
1
解决办法
215
查看次数

使用ES6时,如何在一个文件中定义导入的函数,而在另一个文件中不定义?

我正在使用babel/ES6和webpack.我正在两个不同的地方导入相同的'actions'文件 - 它导出一堆函数.在一个地方它返回一个模块,另一个undefined:

actions.js

export function test() { ... }
export function test2() { ... }
Run Code Online (Sandbox Code Playgroud)

App.js

import actions from './actions'
class App extends React.Component { ... }
console.log(actions);         //<--------  Object{test:function,test2:function)
export default connect((state) => { ... },actions)(App);
Run Code Online (Sandbox Code Playgroud)

编辑 App.js工作的原因是因为它实际上import * as actions是在下面使用sugested ,我只是在示例中重新输入错误

NestedComponent.js

import actions from './actions'
class NestedComponent extends OtherComponent { ... }
console.log(actions);         //<--------  logs undefined
export default connect((state) => { ... },actions)(NestedComponent);
Run Code Online (Sandbox Code Playgroud)

这与webpack定义模块/文件的顺序有关吗?

ecmascript-6 reactjs webpack babeljs redux

7
推荐指数
2
解决办法
8984
查看次数