如何从无序的Immutable.List()中删除重复项?(不使用toJS()或toArray())
例如
Immutable.List.of("green", "blue","green","black", "blue")
Run Code Online (Sandbox Code Playgroud) 我有一个自定义模式,可以滑入componentDidMount
:
componentDidMount() {
Animated.timing(this._animatedValue.y, {
duration: 200,
toValue: 0
}).start()
}
Run Code Online (Sandbox Code Playgroud)
好的,这很简单.但是,我也喜欢在组件卸载时滑出模态.对我来说,componentWillUnmount()
感觉是对的,因为这是一种优雅的陈述方式:
componentWillUnmount() {
Animated.timing(this._animatedValue.y, {
duration: 200,
toValue: deviceHeight
}).start()
}
Run Code Online (Sandbox Code Playgroud)
但这当然不工作,因为阵营犯规等到我已经完成我的动画.
所以目前我使用自定义函数解决这个问题:
closeModal() {
Animated.timing(this._animatedValue.y, {
duration: C.filterModalDuration,
toValue: deviceHeight
}).start()
InteractionManager.runAfterInteractions(() => {
this.props.UnmountThisComponent()
})
}
Run Code Online (Sandbox Code Playgroud)
这当然不是那么优雅,但它有效.但是,如果我需要从组件树中很远的组件调用此函数,疼痛就开始了,即我需要手动传递这个函数onUnmount={()=> closeModal()}
,然后onUnmount={this.props.onUnmount}
一遍又一遍......
然后我想我可以用redux和redux-connect来解决这个问题.我正在考虑从子组件触发redux状态更改,然后通过componentWillRecieveProps()
这样调用函数:
componentWillReceiveProps (nextProps) {
if (nextProps.closeFilter === true) {
this.closeModal()
}
}
Run Code Online (Sandbox Code Playgroud)
然而,这感觉非常hacky和必要.
有没有办法以优雅/声明的方式解决这个问题?
什么是最佳实践/模式使领域成为反应原生应用程序中的反应数据源?特别是对于演示和容器组件模式?
这是一个我想要反应的例子:Rem Native的领域
关于自动更新/更改事件的文档有点薄,官方示例没有使用此功能(据我所知).
分析React Native iOS应用程序的最佳做法是什么?官方文档说我应该使用Apple xCode的仪器,但我真的找不到任何好的RN相关资源.
我无法通过CMD + D打开我的开发菜单或通过CMD + R重新加载.它只是停止工作,没有我故意改变一些东西.
更多信息:
react-native run-ios
或通过xCodereact-native init newProject
我试图修复它:
react-native upgrade
并说yes
每次覆盖我有一个看起来像这样的列表:
["green", "blue","green","green", "blue", "black"]
Run Code Online (Sandbox Code Playgroud)
如何使用ImmutableJS运算符来计算这些项并获得一个如下所示的Map:
{ green: {name: green, count: 3}, blue:{name: blue, count: 2}, black:{name: black, count: 1}}
Run Code Online (Sandbox Code Playgroud)
我在这里找到了以下函数来做普通JS,所以我怎么能用ImmutableJS实现呢?
export const countOccurances = obj => {
return obj
.reduce((counter, x) => {
if (counter.hasOwnProperty(x)) {
counter[x].count = counter[x].count + 1
} else {
counter[x] = {name: x, count: 1}
}
return counter;
}, {})
}
Run Code Online (Sandbox Code Playgroud) 什么是lodash的shuffle函数(或类似的)的性能实现,以在不使用from/toJs()的情况下对不可变列表进行混洗?