《Film Night》IOS App - React Native


React & React Native

对此,我并不想多谈关于React 的任何东西,我仅仅是喜欢UI层新的实现方式,而React本身就很好,因为它颠覆了传统的实现风格。

显然,你想从我这里获取更多关于ReactReact Native 更多信息,你一定会失望。因为,没有比去它们的官方网站获取信息更高效的方式了。

Redux

ReduxFlux 架构风格的进一步实现。 它是一个基于JavaScript的 state container。所以,Redux 非常适用于用来托管 React Component 的状态,而不是让 State Initialize、State Update充斥 在应用程序的每个角落。这就是Flux风格,一个好的状态管理容器不仅能让你的 codebase 更加的清爽,更重要的是让 state 时时监控、随时还原成为了可能。 为了使用更好的编程模式,你最好需要一起使用Redux的配套基础设施,它能让你的代码看起来更符合预期:

Container Components

没错,它是基于React而诞生的一种新的设计模式。也是对Flux架构风格的一种实现。

我尝试用一个简单的idea来阐述这个事实:

有一个React Component叫着CommentList,一旦它Load完成,它就渲染出
所有 comment 的 user 和 content。

所以,你会以非常快的速度完成这道家庭作业,它看起来也许是这样子:

class CommentList extends React.Component {
  this.state = { comments: [] };

  componentDidMount() {
    fetchSomeComments(comments =>
      this.setState({ comments: comments }));
  }
  render() {
    return (
      <ul>
        {this.state.comments.map(c => (
          <li>{c.body}—{c.author}</li>
        ))}
      </ul>
    );
  }
}
目前为止,没有任何问题,实现的还不错。

实际上,你的 Component 负责了以下两件事情(将来或许更多):

我想说的是,这并没有什么错误。但忽略了 React 的一大优势:Reusability (可重用性)。

来吧,换一种角度思考。既然我们推崇职责单一原则,那么显然,以上风格的确是存在设计上 的缺陷。我们就要尝试将正确的事物放到正确的位置,让它们以更好的方式进行链接、协同工作。

用 Container 来处理业务逻辑:

class CommentListContainer extends React.Component {
  state = { comments: [] };
  componentDidMount() {
    fetchSomeComments(comments =>
      this.setState({ comments: comments }));
  }
  render() {
    return <CommentList comments={this.state.comments} />;
  }
}
  
用无逻辑视图来渲染UI:
class CommentList extends React.Component {
  render() {
    return (
    <ul>
    {this.props.comments.map(c => (
      <li>{c.body}—{c.author}</li>
    ))}
    </ul>
    )
  }
}
  

It's better now! 它们看起来就优雅了许多!有很重要的一点必须体会到:component 的 props 是只读的,我们就用它来决定视图应该渲染成什么样子, 至于更为复杂的 state 就交给container处理吧。 但是这一切都不必你手动的分离出Container,react-redux中的 connect 方法 用来链接你的业务逻辑与视图,并自动创建并返回一个 Container 类型,在其他 Component 中就可以直接引用它。

<<Film Night>>

它是一款关于电影推荐和搜索的APP,它会定位你所在的城市并推送正在上映和即将上映的新电影。 是基于以上我阐述的总总之后的产物,我用到了前面我所有提到的理论和事实。另外,推荐一个制作App icon的在线网站,十分好用: Make App Icon。同时,我也采用了热更新部署方案,请参考: microsoft code push

目前,这是它的样子:

是的,学习 React Native或是 React 的成本很低,希望能进一步学习它的源码和思想,这才是最重要的;为什么往往在类似 Facebook 一样的公司里容易诞生出 一种新的框架或是开发模式,我想大概那里更接近事实真相。

更多 React、React Native 资源,请参考 Js Coach.

(打赏)

If you want to pay for this
I will list your account name here.
HA HA!