动态修改中继默认网络层

时间:2016-10-06 05:56:31

标签: javascript react-native relay

我有一个React-Native应用程序,旨在提供多语言支持。

它使用Relay,所以我在根组件上面有这样的代码。

Relay.injectNetworkLayer(new DefaultNetworkLayer("http://localhost/graphql"))

现在,语言参数通过参数Facebook does it及其Graph API传递。

Relay.injectNetworkLayer(new DefaultNetworkLayer("http://localhost/graphql?locale=en_US"))

如果可以从设置更改应用程序的语言,如何动态更改?从某种意义上说,如果用那些语言变化重新启动应用程序呢? 我可能只是试图同时第一次实施relayreact-native-router-flux而让自己感到困惑....

这是完整的根容器代码:

import Relay, {
  DefaultNetworkLayer,
  RootContainer,
} from 'react-relay'
import RelayRenderer from 'rnrf-relay-renderer'
import {
    Actions,
    Reducer,
    Router,
    Scene
} from 'react-native-router-flux'

const locale = `en_US`
Relay.injectNetworkLayer(new DefaultNetworkLayer(`http://localhost/graphql?locale=${locale}`))

const reducerCreate = params => {
    const defaultReducer = Reducer(params)
        return (state, action) => {
            return defaultReducer(state, action)
        }
    }
}

export default class App extends Component {
    render() {
        return (
            <Router
                createReducer={reducerCreate}
                wrapBy={RelayRenderer()}
            >
                ...
                ...
            </Router>
        )
    }
 }

1 个答案:

答案 0 :(得分:0)

为什么不使用指定语言区域设置的标头。