【问题标题】:ReactJS Router component not displaying anythingReactJS 路由器组件不显示任何内容
【发布时间】:2018-07-11 11:45:45
【问题描述】:

我现在想知道为什么我的页面没有呈现任何东西,而我相信一切看起来都正确。从像往常一样导入组件开始,我的代码结构如下:

import Bitcoin from '../coins/bitcoin';

然后我正在尝试做一些测试,所以我正在使用比特币进行调试,并且我有这个设置可以路由到比特币页面

              {
                coins.map((coin,i) => (
                  <tr key={i}>
                    <td className="coin_rank">{coin.rank}</td>
                    <td className="coin_link">
                      <img className = "coin_logo" src={require('./logos/' + coin.id + '.png')} alt = {coin.id}/>
                      &nbsp;&nbsp;

                      <Link to={'/coins/' + coin.id}>{coin.name}</Link>

                      <Router>
                        <Route path={'/coins/' + coin.id} component={Bitcoin} />
                      </Router>

                    </td>
                    <td className="coin_price"><NumberFormat value={coin.price_usd} displayType={'text'} thousandSeparator={true} prefix={'$'} /></td>
                    <td className="market_cap"><NumberFormat value={coin.market_cap_usd} displayType={'text'} thousandSeparator={true} prefix={'$'} /></td>
                    <td className="coin_supply"><strong>{coin.symbol}</strong>&nbsp;&nbsp;<NumberFormat value={coin.available_supply} displayType={'text'} thousandSeparator={true} /></td>
                    <td className="coin_change">{coin.percent_change_24h}%</td>
                  </tr>
                ))
              }

但是现在页面加载时什么都没有呈现,我唯一的问题是我正在使用 websockets 从 API(socket.io)中提取数据。我在比特币组件上收到的唯一错误是这个错误:

index.js:2178 警告:只能更新已安装或已安装的组件。这通常意味着您在未安装的组件上调用了 setState、replaceState 或 forceUpdate。这是无操作的。

我正在渲染的只是一个带有文本 TEXT 的标题。

但我相信这与此无关?如果是这样,我可能是错的......但这是我能提供的全部

编辑:

尝试@Lavish 的解决方案,但最终结果是这样

            {
              coins.map((coin,i) => (
                <tr key={i}>
                  <td className="coin_rank">{coin.rank}</td>
                  <td className="coin_link">
                    <img className = "coin_logo" src={require('./logos/' + coin.id + '.png')} alt = {coin.id}/>
                    &nbsp;&nbsp;

                    <Link to={'/coins/' + coin.id}>{coin.name}</Link>

                  </td>
                  <td className="coin_price"><NumberFormat value={coin.price_usd} displayType={'text'} thousandSeparator={true} prefix={'$'} /></td>
                  <td className="market_cap"><NumberFormat value={coin.market_cap_usd} displayType={'text'} thousandSeparator={true} prefix={'$'} /></td>
                  <td className="coin_supply"><strong>{coin.symbol}</strong>&nbsp;&nbsp;<NumberFormat value={coin.available_supply} displayType={'text'} thousandSeparator={true} /></td>
                  <td className="coin_change">{coin.percent_change_24h}%</td>
                </tr>
              ))
            }
            <Router>
              <Route path='/coins/bitcoin' component={Bitcoin} />
            </Router>

它现在加载一个新页面但不渲染组件...这是怎么回事?!

【问题讨论】:

  • 您正在添加多个 &lt;Router&gt; 组件 - 这是不行的。将当前组件包裹在 &lt;Router&gt; 中。
  • 啊,那行得通!但现在它正在这样做 gyazo.com/6aa8527b2af25abc4962115934cfefa1 。我希望它加载一个新页面,而不是像这样呈现 o_o 那将如何工作?
  • 那么你的路线应该在顶层
  • @lavish 你能详细说明一下吗?我必须为未来做计划,我必须添加一个 babel 组件来读取文件目录并通过对象引用它们。所以我需要动态计算所有硬币。
  • 我已经发布了答案。请检查并让我知道我是否能够正确解释。

标签: reactjs hyperlink routing components


【解决方案1】:

您的组件层次结构应该是这样的。

<Router>
  <Route path="/coins/" component={CoinList} />
  <Route path={`/coins/${coin.id}`} component={Bitcoin} />
</Router>

并且您的列表组件应该只有链接组件来导航路线。 在 react router v4 中,您提到 &lt;Route&gt; 的地方将使用当前路由组件渲染该特定 dom 节点。

您正在尝试在此处执行此操作 (https://reacttraining.com/react-router/web/guides/dealing-with-update-blocking),但不适用。

我希望这可以解释。

【讨论】:

  • 所以我尝试了这个并在循环之后声明了路由器,所以它只创建一次,但是当我在没有列表的情况下测试它(还没有列表)时,它仍然将我链接到一个空白页面,如所以,(请检查对原始帖子的编辑)。这是共享整个文件的代码链接,因此您可以查看发生了什么codeshare.io/5NmlWr
  • 主路由器在哪里?应用程序中应该只有一个路由器实例。如果您可以粘贴主路由器的链接,我可以检查出什么问题。
  • 你在哪里为表分配'/'路由?
  • 我将其分配在另一个组件中,即 App.js gyazo.com/013852dc212134b91969775963e067f4
  • 只把你的比特币路由放在这条路由下面。
猜你喜欢
  • 2019-01-20
  • 1970-01-01
  • 2020-07-24
  • 2020-08-21
  • 2020-05-25
  • 2021-01-04
  • 2021-02-24
  • 2020-03-06
  • 1970-01-01
相关资源
最近更新 更多