繁体   English   中英

如何使用 ramda 进一步编写此代码?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM