在 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" />
无论您想在哪个文件中显示此图像。
我正在使用 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" />
无论您想在哪个文件中显示此图像。