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

问题描述 投票:0回答:1

我设法将这段代码重构为现在的样子,但是我认为它可以变得更好,更干净

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
javascript react-native ramda.js
1个回答
1
投票

我会咖喱createStackNavigator,并使用R.applySpec创建stack函数,并使用R.useWith生成createNavigator函数。现在,您只需要传递配置即可获得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)
© www.soinside.com 2019 - 2024. All rights reserved.