小编Ben*_*ley的帖子

更改表结构会导致React失去对DOM的跟踪

我试图在React中创建一个表组件,其中列和行都是动态的并随时间而变化.但是,当数据发生更改时,React会抛出意外的DOM突变不变违规.

这是一个演示http://jsfiddle.net/69z2wepo/1797/问题的小提琴.如您所见,数据在初始渲染后发生变化,React无法再跟踪DOM的状态.

代码在这里:

var Table = React.createClass({
    getDefaultProps: function() {
      return {
        data: [
          {
            colA: { value: 'foo' },
          },
        ],
      };
    },
    render: function() {
        return (
          <table>
            <thead>
              <tr> {
                Object.keys(this.props.data[0]).map(function(key) {
                  return (<th>{ key }</th>);
                }.bind(this))
              } </tr>
            </thead>
            <tbody> {
              this.props.data.map(function(item) {
                return (<tr> { Object.keys(item).map(function(key) {
                  return (
                    <td>{ item[key] }</td>
                  );
                }.bind(this)) } </tr>);
              }.bind(this))    
            } </tbody>
          </table>
        );
    }
 });

var Main = React.createClass({
  componentWillMount: function() {
    setTimeout(function() {
      var …
Run Code Online (Sandbox Code Playgroud)

javascript html-table reactjs

4
推荐指数
1
解决办法
1016
查看次数

带有括号的初始化变量的Javascript变量声明

在React本机网站中,有以下代码行:

var React = require('react-native');
var { TabBarIOS, NavigatorIOS } = React;
Run Code Online (Sandbox Code Playgroud)

在示例的第二行中,TabBarIOS和NavigatorIOS变量周围括号的含义是什么?

javascript syntax

3
推荐指数
1
解决办法
1291
查看次数

Control.Parallel.Strategies中Eval的bind运算符如何严格评估其参数?

Control.Parallel.Strategies的源代码(http://hackage.haskell.org/packages/archive/parallel/3.1.0.1/doc/html/src/Control-Parallel-Strategies.html#Eval)包含一个Eval类型定义为:

data Eval a = Done a
Run Code Online (Sandbox Code Playgroud)

其中有以下Monad实例:

instance Monad Eval where
  return x = Done x
  Done x >>= k = k x   -- Note: pattern 'Done x' makes '>>=' strict
Run Code Online (Sandbox Code Playgroud)

请注意bind定义中的注释.为什么这个评论是真的?我对严格性的理解是,如果一个函数必须"知道"它的论点,那么它就是严格的.这里,bind只是将k应用于x,因此它(对我来说)不需要知道关于x的任何信息.此外,评论表明,在甚至定义函数之前,在模式匹配中"引发"严格性.有人能帮助我理解为什么绑定是严格的吗?

此外,看起来Eval只是Monad的身份,并且鉴于bind的定义中的注释,bind几乎对任何Monad都是严格的.是这样的吗?

haskell strictness

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

标签 统计

javascript ×2

haskell ×1

html-table ×1

reactjs ×1

strictness ×1

syntax ×1