小编Luk*_*yes的帖子

componentDidUpdate()中的setState()

我正在编写一个脚本,根据下拉的高度和屏幕上输入的位置,将输入下移或高于输入.另外,我想根据其方向将修改器设置为下拉列表.但是setState在内部使用componentDidUpdate会创建一个无限循环(很明显)

我已经找到了getDOMNode直接使用和设置classname到dropdown 的解决方案,但我觉得使用React工具应该有更好的解决方案.有谁能够帮我?

这是工作代码的一部分getDOMNode(有点忽略定位逻辑以简化代码)

let SearchDropdown = React.createClass({
    componentDidUpdate(params) {
        let el = this.getDOMNode();
        el.classList.remove('dropDown-top');
        if(needToMoveOnTop(el)) {
            el.top = newTopValue;
            el.right = newRightValue;
            el.classList.add('dropDown-top');
        }
    },
    render() {
        let dataFeed = this.props.dataFeed;
        return (
            <DropDown >
                {dataFeed.map((data, i) => {
                    return (<DropDownRow key={response.symbol} data={data}/>);
                })}
            </DropDown>
        );
    }
});
Run Code Online (Sandbox Code Playgroud)

这里是setstate的代码(创建一个无限循环)

let SearchDropdown = React.createClass({
    getInitialState() {
        return {
            top: false
        };
    },
    componentDidUpdate(params) {
        let el = this.getDOMNode();
        if (this.state.top) {
           this.setState({top: …
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6 reactjs

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

为什么Ruby只在我的系统上抛出Segmentation故障,而且只在这个Rails应用程序中?

我不确定如何正确调试这个但是尝试了一些不同的方法,这些方法已经缩短了时间,但没有解决问题.我办公室中至少有4个人可以在相同的机器上执行此代码,并且安装了相同版本的ruby和rubygems且没有错误.

这是我正在执行的代码:

status = Open4::popen4( "swfmill simple stdin stdout" ) do | pid, stdin, stdout, stderr |
  stdin.write( config )
  stdin.close
  bytes = stdout.read
  errors = stderr.read
end
Run Code Online (Sandbox Code Playgroud)

我在这条线路上遇到"总线错误":

errors = stderr.read
Run Code Online (Sandbox Code Playgroud)

如果我评论该行,我会在此行上收到"Segementation Fault":

bytes = stdout.read
Run Code Online (Sandbox Code Playgroud)

我显然使用Open4库并执行外部进程.这个外部进程在直接从终端执行时非常有效,并且当这个Ruby代码在这个特定的Rails应用程序之外运行时,即使在不同的,更简单的Rails应用程序中也是如此.

要重现错误,我只需执行我的特定测试方法,如下所示:

ruby test/unit/swf_generator_test.rb --name test_get_bytes
Run Code Online (Sandbox Code Playgroud)

我在配备Intel Core 2 Duo 2.53 GHz和8GB RAM的MacBook Pro上运行Snow Leopard Mac OS X 10.6.2(10C540).

ruby -v && gem -v
ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-darwin10.2.0]
1.3.5
Run Code Online (Sandbox Code Playgroud)

我在GDB中执行了这段代码,发现我的libxml和libxslt库都安装不正确.我能够安装这两个库,现在GDB不再告诉我任何我认为有用的东西.以下是GDB的当前输出:

gdb ruby

GNU gdb 6.3.50-20050815 (Apple version gdb-1344) (Fri Jul  3 …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails swfmill segmentation-fault

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

有没有办法让Eclipse完全处理4个空格,就像处理选项卡一样?

我理解如何让Eclipse在选项卡的位置插入空格,但是我宁愿不必通过12个空格来到达缩进的块.

如果有办法隐藏"显示空白字符"中的空格,则可以获得奖励积分.我喜欢看到制表符和回车符的空白字符,但是当显示空格时,显示也会变得混乱.

eclipse

8
推荐指数
2
解决办法
860
查看次数

Ruby Yard 是否具有可与 RDoc :include: 标签相媲美的功能?

RDoc 有 :include: 标签(见本页底部),它将接收任意文本文件和格式,就好像它在包含开始的地方缩进一样。这是为文档示例提取源代码的好方法。

Yard是否有类似的标签或功能?

ruby rdoc yard

5
推荐指数
1
解决办法
415
查看次数

简单的MySQL查询需要2到3秒?

我运行的过程很简单,它会定期提取RSS feed并更新MySQL数据库中的文章。

现在,articles表已填充到约13万行。对于找到的每篇文章,处理器都会检查该文章是否已经存在。这些查询几乎总是花费300毫秒,大约每10或20次尝试,它们就会花费2秒钟以上。

SELECT id FROM `articles` WHERE (guid = 'http://example.com/feed.rss')  LIMIT 1;
# Query_time: 2.754567  Lock_time: 0.000000  Rows_sent: 0  Rows_examined: 0
Run Code Online (Sandbox Code Playgroud)

我在guid列上有一个索引,但是每当遇到新文章时,它就会被添加到Articles表中-使查询缓存无效(对吗?)。

慢查询日志中的其他一些字段报告检查了120多个行。

当然,在我的开发机器上,这些查询大约需要0.2毫秒。

该服务器是Engine Yard Solo(EC2)的虚拟主机,具有1.7GB的内存以及这些天附带的任何CPU EC2。

任何建议将不胜感激。

更新资料

事实证明,问题出在椅子和键盘之间。

我在'id'上有一个索引,但在'guid'上查询。

在“ guid”上添加索引可使查询时间降低到0.2毫秒。

感谢大家提供的所有有用提示!

mysql performance

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