小编dan*_*ele的帖子

React PropTypes vs. Flow

PropTypes和Flow涵盖类似的东西,但使用不同的方法.PropTypes可以在运行时为您提供警告,这有助于快速查找来自服务器等的错误响应.但是,Flow似乎是未来,并且像泛型这样的概念是一个非常灵活的解决方案.此外,Nuclide提供的自动完成功能对Flow来说是一个很大的优势.

我现在的问题是,在开始一个新项目时,哪种方式最好.或者它是一个很好的解决方案同时使用Flow和PropTypes?使用两者的问题是你写了很多重复的代码.这是我写的音乐播放器应用程序的示例:

export const PlaylistPropType = PropTypes.shape({
    next: ItemPropTypes,
    current: ItemPropTypes,
    history: PropTypes.arrayOf(ItemPropTypes).isRequired
});

export type Playlist = {
    next: Item,
    current: Item,
    history: Array<Item>
};
Run Code Online (Sandbox Code Playgroud)

这两个定义基本上都包含相同的信息,当数据类型发生变化时,两个定义都需要更新.

我发现这个babel插件将类型声明转换为PropTypes,这可能是一个解决方案.

reactjs flowtype react-proptypes

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

使用继电器时如何处理本地状态?

我正在研究基于反应/中继的内容管理系统.用户可以创建和修改存储在服务器上的文章.在将文章保存到服务器之前,我想知道最好的方法是处理文章的修改状态.我可以想到几种不同的方法来解决这个问题:

1)不受控制的输入

我可以使用填充输入元素,defaultValue而不是显式地存储状态.DOM将用作修改数据的商店.一旦用户点击"保存",我收集所有字段,读取值并创建变异.

优点:

  • 没有当地的国家处理

魂斗罗:

  • 我不知道哪些字段已更改,需要通过突变发送所有数据.或者需要一些额外的逻辑来创建差异
  • 无法更新视图的其他部分以响应状态更改

2)在本地复制:

我可以将修改后的文章保留在react组件的本地状态,并使用受控输入字段来保持同步.

优点:

  • 本地州只能改变字段,因此差异很容易
  • UI的其他部分可以响应本地状态的变化

魂斗罗:

  • 这似乎是一种反模式,因为视图中的数据不是直接来自中继.本地状态和中继道具之间的同步可能是错误的来源

3)服务器是新的本地:

只需为每个单独的更改创建一个变异.使用乐观更新,这也应该提供良好的用户体验.

优点:

  • 中继是数据真实的唯一来源
  • 状态是在服务器端保存的,因此如果用户意外关闭浏览器,则会有备份

魂斗罗:

  • 这需要在服务器端实现更复杂的实现,以处理用户想要丢弃草稿等的情况.
  • 引发了许多突变

这三种方法可以解决我想到的问题,但也许有更好的方法可以解决这个问题.

我已经看到有很多关于如何使用Relay处理本地状态的讨论,并且可能会有一个内置的解决方案,其中包含Relay的未来版本,但是我需要一个适用于当前版本的解决方案的解决方案中继.

javascript reactjs relayjs

25
推荐指数
1
解决办法
1264
查看次数

在MacOS 10.9(Mavericks)应用程序中禁用App Nap

我正在编写一个接收OSC消息的应用程序.但是,由于10.9的App-Nap技术,应用程序在离开前台后停止对这些消息做出反应.我想为我在10.9上运行的应用程序禁用AppNap,但仍然可以在10.8上运行,所以我尝试了这段代码,但它没有显示任何效果.

if ([[NSProcessInfo processInfo] respondsToSelector:@selector(beginActivityWithOptions:reason:)]) {
    [[NSProcessInfo processInfo] beginActivityWithOptions:0x00FFFFFF reason:@"receiving OSC messages"];
}
Run Code Online (Sandbox Code Playgroud)

查看github上的完整代码.

if条件似乎按预期工作,并在10.9机器上执行.但是,该应用程序被发送到睡眠状态.(Activity Monitor为我的应用程序显示"App Nap:Yes").

谢谢你的帮助!

macos objective-c

18
推荐指数
2
解决办法
5453
查看次数

透明背景WKWebView(NSView)

我正在使用Swift构建Mac应用程序.因此,我想让WKWebView透明,因此它显示了加载的HTML的文本,但我的底层NSWindow的背景是可见的.我试过了

webView.layer?.backgroundColor = NSColor.clearColor().CGColor;
Run Code Online (Sandbox Code Playgroud)

没有任何影响.WKWebView继承自NSView,但我不知道这是否有帮助.

另一个解决方案是插入一个NSVisualEffectView作为WebView的背景,但我不知道如何实现它!

macos appkit swift

10
推荐指数
4
解决办法
3455
查看次数

使用反应原生模态的最佳实践

我的本机应用程序有几种情况可以呈现不同的模态.我想知道实现这一目标的最佳方法是什么.总的来说,我看到两种不同的方法:

a) 在根视图中,我总是安装了Modal-component,只需切换内容,就像这样......

<View>
    {...}
    <Modal visible={this.props.modal > 0}>
         {this.props.modal === 1 && <ModalContent1 />}
         {this.props.modal === 2 && <ModalContent2 />}
         {this.props.modal === 3 && <ModalContent3 />}
    </Modal>
</View>
Run Code Online (Sandbox Code Playgroud)

b)每个模态都Modal带有它自己的组件,并安装在树中的某个地方,靠近它触发的地方.

你更喜欢哪种方式?为什么?

适用于这两种方法的问题是,如果Modal-component应始终挂载并且仅使用visible-prop 触发.如果这是要走的路,我假设方法b)需要更多内存,因为Modal创建了组件的多个实例.

react-native

8
推荐指数
1
解决办法
739
查看次数