[英]How to compose this code further using ramda?
我设法将这段代码重构为现在的样子,但我觉得它可以更好更干净
const App = config => createStackNavigator({ /* */ }, config)
const SignIn = config => createStackNavigator({ /* */ }, config)
const SignUp = config => createStackNavigator({ /* */ }, config)
const stackNavigatorConfig = { /* */ }
const stacks = {
SignUp: SignUp(stackNavigatorConfig),
SignIn: SignIn(stackNavigatorConfig),
App: App(stackNavigatorConfig),
Loading,
}
const switchNavigatorConfig = { /* */ }
const Navigator = compose(
createAppContainer,
createAnimatedSwitchNavigator
)(stacks, switchNavigatorConfig)
export default Navigator
I would curry createStackNavigator
, and use R.applySpec
to create a stack
function, and R.useWith
to generate a createNavigator
function. 现在您只需要传递配置即可获取Navigator
。
代码示例(未测试):
const curriedCreateStackNavigator = R.curry(createStackNavigator)
const stacks = R.applySpec({
SignUp: curriedCreateStackNavigator({ /* */ }),
SignIn: curriedCreateStackNavigator({ /* */ }),
App: curriedCreateStackNavigator({ /* */ }),
Loading: R.always(Loading),
})
const createNavigator = R.useWith(R.compose(
createAppContainer,
createAnimatedSwitchNavigator
), [stacks, R.identity])
const switchNavigatorConfig = { /* */ }
const stackNavigatorConfig = { /* */ }
export default createNavigator(stackNavigatorConfig, switchNavigatorConfig)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.