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,这可能是一个解决方案.
我正在研究基于反应/中继的内容管理系统.用户可以创建和修改存储在服务器上的文章.在将文章保存到服务器之前,我想知道最好的方法是处理文章的修改状态.我可以想到几种不同的方法来解决这个问题:
1)不受控制的输入
我可以使用填充输入元素,defaultValue而不是显式地存储状态.DOM将用作修改数据的商店.一旦用户点击"保存",我收集所有字段,读取值并创建变异.
优点:
魂斗罗:
2)在本地复制:
我可以将修改后的文章保留在react组件的本地状态,并使用受控输入字段来保持同步.
优点:
魂斗罗:
3)服务器是新的本地:
只需为每个单独的更改创建一个变异.使用乐观更新,这也应该提供良好的用户体验.
优点:
魂斗罗:
这三种方法可以解决我想到的问题,但也许有更好的方法可以解决这个问题.
我已经看到有很多关于如何使用Relay处理本地状态的讨论,并且可能会有一个内置的解决方案,其中包含Relay的未来版本,但是我需要一个适用于当前版本的解决方案的解决方案中继.
我正在编写一个接收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").
谢谢你的帮助!
我正在使用Swift构建Mac应用程序.因此,我想让WKWebView透明,因此它显示了加载的HTML的文本,但我的底层NSWindow的背景是可见的.我试过了
webView.layer?.backgroundColor = NSColor.clearColor().CGColor;
Run Code Online (Sandbox Code Playgroud)
没有任何影响.WKWebView继承自NSView,但我不知道这是否有帮助.
另一个解决方案是插入一个NSVisualEffectView作为WebView的背景,但我不知道如何实现它!
我的本机应用程序有几种情况可以呈现不同的模态.我想知道实现这一目标的最佳方法是什么.总的来说,我看到两种不同的方法:
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创建了组件的多个实例.
macos ×2
reactjs ×2
appkit ×1
flowtype ×1
javascript ×1
objective-c ×1
react-native ×1
relayjs ×1
swift ×1