有没有一种方法可以判断它是本机反应还是网络反应?

Is there a way in react to tell if it is react native or web?

我有一堆 React 组件,希望可以同时用于 Web 和本机。我尝试这样做的方式是这样的:

React.createClass({
    getInitialState: function(){
        return {isMobile: <some way of tell is native or web>};
    },
    render: function(){
        if(this.state.isMobile){
            return <SomeIosComponent/>
        }
        else{
            return <div/>
        }
    }
});

我希望能够做到这一点,这样我就可以使在 Web 和本机上看起来相同的内容保持相同的逻辑,这可能吗?能不能简单到{isMobile: (window ? false : true)}?或者 window 是否存在于本机中,所以有一种方法可以出于某种奇怪的原因在局部范围内定义全局变量?

我知道这违背了 "Learn once, write anywhere" 的 React 理念。

就像你说的,这违背了 React 的哲学,所以我不推荐它。

但是,如果您真的想使用此方法,有一种方法可以确定您使用的是哪种 React。这可能感觉有点 hacky,但是 React Native 有很多 React 没有的特性。所以当你写你的组件时,你可以检查 React.View 是否存在。如果是,则说明您正在使用 React Native。否则,您使用的是网页版。

React.createClass({
    getInitialState: function(){
        return {isMobile: React.View !== undefined };
    },
    render: function(){
        if(this.state.isMobile){
            return <SomeIosComponent/>
        }
        else{
            return <div/>
        }
    }
});