我有一个状态数组,让我们说这个.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的东西,因此总是首先在内存中复制
我做了一个没有正常运行的反应应用程序,并且使用它的人注意到偶尔会发生一些奇怪的错误.我不知道为什么或发生了什么,也无法重现它.
所以我想知道是否有办法将整个应用程序或部分应用程序包装在try/catch块中,以便我可以将错误发送到服务器上的错误日志中?
到目前为止我所读到的只是你可以将整个渲染函数包装在try/catch中,但由于用户的交互,这不能捕获任何错误吗?
所以我在我的gruntfile中有这个:
gruntConfig.babel = {
options: {
sourceMap: true
},
dist: {
files: {
"dist/server.js": "src/*.js"
}
}
};
Run Code Online (Sandbox Code Playgroud)
这正确地转换了src中的所有js文件,但每次都会覆盖dist/server.js.
这一定非常简单,但我似乎无法弄清楚如何将其写入不同的输出文件,每个源文件一个.
对于具有.tsx扩展名的文件,调试功能对我而言不再起作用。
源地图从其仍在工作时就保持不变。但是.tsx文件现在看起来是这样的。所有代码都是黑色的,而不是样式化的,以指示关键字/字符串等之间的差异。而且,在调试(确实有效)时,我无法将变量悬停以查看其值。
任何想法如何解决这个问题?
编辑:我曾经通过发送内容类型标头解决此问题,如下面的答案所述。但是,即使我在新标签页中打开源文件时,问题又回到了现在,我可以看到Content-Type为“ application / javaScript”
我已经看到这个算法应该可以用来删除所有左递归.然而,我遇到了这个特殊语法的问题:
A -> Cd
B -> Ce
C -> A | B | f
Run Code Online (Sandbox Code Playgroud)
无论我尝试什么,我最终都在循环中或使用仍然间接留下递归的语法.
在这个语法上正确实现这个算法的步骤是什么?
对不起,如果这是一个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个数字都在那里)
从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) 我正在构建一个应用程序,可以根据需要加载各种模块(由不同的webpack配置生成的其他包).该BaseModule
负责,知道什么时候加载的包和出口一些默认的类一样BaseUtils
.模块本身不知道可能需要加载的所有可能的模块/包.
TestModule
是运行时按需加载BaseModule
并TestModule
希望使用的模块之一BaseUtils
.
现在的问题是:是否有可能require('basemodule/BaseUtils')
在TestModule
,它有自己的webpack.config.js文件中,BaseModule
列出外部?也就是说,有没有办法让生成的testmodule bundle重用生成的basemodule bundle中可用的模块?或者BaseModule是否需要导出到全局变量?
我正在使用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定义模块/文件的顺序有关吗?