在 meteor 1.4 + react-router 内部设置图像路径

Setting the path to an image internally in meteor 1.4 + react-router

我正在使用 React 路由器和 meteor 和 react.semantic-ui。

我想渲染一个标志 (png) ind med menu/navigationbar,但是 png 没有出现,只有一个损坏的 link 图标,如何指定在内部找到 png 的位置project/on 文件系统?

我知道在 webpack 中你必须 require png 文件,但我不知道如何使用流星来做到这一点。

如果我使用外部 link 它工作正常。如果我按照 url 到 png,我会收到警告

browser.js:49 Warning: [react-router] Location "/icons/Mmlogo.png" did not match any routes.

我的导航栏组件:

import React, { Component } from 'react';
import {Link, IndexLink} from 'react-router';

import { Menu, Image} from 'semantic-ui-react';

import {LoginButton} from './header/Login.jsx';
import {LoggedIn} from './header/LoggedIn';
import MmSubheader from '../components/MmSubheader';

const logo = './Mmlogo.png';

export default class MmHeader extends Component {
  state = {}

  handleItemClick = (e, { name }) => this.setState({ activeItem: name })

  render() {
    const { activeItem } = this.state

    return (
      <div>
        <Menu secondary pointing >
          <div className="ui container Mmheader">
            <Menu.Item as={IndexLink} to='/' active={activeItem === ''}>
              <Image src={logo} size="mini" />
            </Menu.Item>
            <Menu.Item as={Link} to='/foryou' name='For You' active={activeItem === 'For You'} onClick={this.handleItemClick} />
            <Menu.Item as={Link} to='/Discover' name='Discover' active={activeItem === 'Discover'} onClick={this.handleItemClick} />
            <Menu.Menu position='right'>
              <Menu.Item>
                <LoginButton />
              </Menu.Item>
            </Menu.Menu>
          </div>
        </Menu>
      </div>
    )
  }

我的路由器:

import React from 'react';
import ReactDOM from 'react-dom';
import {Router, Route, IndexRoute, browserHistory} from 'react-router';

import MainLayout from '../../ui/layout/MainLayout.jsx';
import Index from '../../ui/pages/Index.jsx';
import ForYou from '../../ui/pages/ForYou.jsx';
import Discover from '../../ui/pages/Discover.jsx';

Meteor.startup(() => {
  ReactDOM.render(
    <Router history={browserHistory}>
      <Route path="/" component={MainLayout}>
        <IndexRoute component={Index} />
        <Route path="foryou" component={ForYou} />
        <Route path="discover" component={Discover} />
      </Route>
    </Router>,
    document.getElementById('react-root'))
})

在 meteor 中,您需要将 public 数据(如徽标和其他图像)放在 public 文件夹中。并且您应该提供不包括 public 文件夹名称的路径。

例子。如果您将徽标放在 public/logo/MMLogo.png 中,那么您应该提供 src 属性值作为 logo/MMLogo.png

<img src="logo/MMLogo.png" />

无论您想在哪个文件中显示此图像。