Facebook在Android上的反应

时间:2013-11-24 13:25:20

标签: android facebook reactjs

我尝试在Android浏览器中运行http://facebook.github.io/react/docs中的一些示例但它们不起作用 - 得到空页。所有页面都是从本地运行的Django dev web服务器提供的,除了React之外的其他工作正常。完全相同的链接在笔记本电脑上工作正常。来自他们的文档“如果您想在触摸设备(即手机或平板电脑)上使用React,只需致电React.initializeTouchEvents(true);即可将其打开。”我假设在移动设备上运行应该没有问题。我在这里遗失了一些陷阱吗? 来源是:

<!DOCTYPE html>
<html>
  <head>
    <title>Hello React</title>
    <script src="/static/phs/js/react.js"></script>
    <script src="/static/phs/js/JSXTransformer.js"></script>
  </head>
  <body>
    <div id="example"></div>
    <div id="example1"></div>
    <script type="text/jsx">
        /** @jsx React.DOM */
        React.initializeTouchEvents(true);
        var HelloWorld = React.createClass({
          render: function() {
            return (
              <p>
                Hello, <input type="text" placeholder="Your name here" />!
                It is {this.props.date.toTimeString()}
              </p>
            );
          }
        });

        setInterval(function() {
          React.renderComponent(
            <HelloWorld date={new Date()} />,
            document.getElementById('example')
          );
        }, 1000);

        var LikeButton = React.createClass({
          getInitialState: function() {
            return {liked: false};
          },
          handleClick: function(event) {
            this.setState({liked: !this.state.liked});
          },
          render: function() {
            var text = this.state.liked ? 'like' : 'unlike';
            return (
              <p onClick={this.handleClick}>
                You {text} this. Click to toggle.
              </p>
            );
          }
        });

        React.renderComponent(
          <LikeButton />,
          document.getElementById('example1')
        );
    </script>
  </body>
</html>

2 个答案:

答案 0 :(得分:1)

在Android的2.3.5内置浏览器和Dolphin Browser 10.1.2上,React对我不起作用。通过安装最新的Firefox修复。

答案 1 :(得分:1)

所以,事实证明可以让React在Android浏览器上运行,至少在Android浏览器4上是这样(我没有早期版本的方便)。诀窍是你必须手动添加React所依赖的polyfill,特别是es5-shimhtml5shiv

有关Facebook默认情况下默认情况下不包含这些内容的更多详情here。简短版本是:

  1. 将javascript库写入规范更简单,更好;
  2. 如果库包含自己的polyfill版本,并且您使用了许多库,则会多次发送相同的代码。