如何使用 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
我会柯里化 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)
我设法将这段代码重构为现在的样子,但我觉得它可以更好更简洁
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
我会柯里化 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)