2016-12-09 28 views
1

IM問題,再利用反應的組分在兩個不同的html頁面如何重用在不同的html頁面反應的組分

繼承人我的應用程序的結構

react app 
    |-- webpack.config 
    |-- package 
    `-- src 
     |-- index.js 
     |-- index.html 
     |-- home.html 
     `-- components 
      |-- Main.js 
      |-- Sector.js 
      |-- Homepage.js 

好於webpack.config我有 這

module.exports = { 
    entry: './index.js', 


entry: [ 
    'webpack-dev-server/client?http://127.0.0.1:' + defaultSettings.port, 
    'webpack/hot/only-dev-server', 
    './src/index' 

    ], 

    output: { 
    path: path.join(__dirname, '/../dist/assets'), 
    filename: 'app.js', 
    }, 


    module: { 
    loaders: [ 
     { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } 
    ] 
    } 
} 
在index.js

import 'core-js/fn/object/assign'; 
import React from 'react'; 
import ReactDOM from 'react-dom'; 
import Appd from './components/Main'; 
import Sector from './components/sector'; 
import Homepagesector from './components/Homepagesector'; 

ReactDOM.render(<Appd />, document.getElementById('app')); 
ReactDOM.render(<Sector />, document.getElementById('sector')); 
ReactDOM.render(<Homepagesector />, document.getElementById('homepage')); 
index.html中

<!doctype html> 
<html > 

<head> 
    <meta charset="utf-8"> 
    <title>zilla</title> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
    <meta name="description" content=""> 
</head> 

    <!-- REQUIRED 3/3 - the image crop directive --> 


    <body > 
     <header> 
     <div id="app"></div> 
     </header> 

     <script src="appcontroller.js"></script> 
     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
    <script>__REACT_DEVTOOLS_GLOBAL_HOOK__ = parent.__REACT_DEVTOOLS_GLOBAL_HOOK__</script> 

     <script type="text/javascript" src="/assets/app.js"></script> 
     <script type="text/javascript" src="resample.js"></script> 
     <script type="text/javascript" src="avatar.js"></script> 
</body>  
</html> 

在home.html做爲

<html> 
<head> 
</head> 
<body > 
<header> 
    <div id="homepage"></div> 
</header> 
    <script src="appcontroller.js"></script> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
    <script>__REACT_DEVTOOLS_GLOBAL_HOOK__ = parent.__REACT_DEVTOOLS_GLOBAL_HOOK__</script> 
    <script type="text/javascript" src="/assets/app.js"></script> 
    <script type="text/javascript" src="resample.js"></script> 
    <script type="text/javascript" src="avatar.js"></script> 
    <script type="text/javascript" src="avatar.js"></script> 
</body> 
</html> 

在組件文件夾 Main.js

require('styles/App.css'); 

import React from 'react'; 

let yeomanImage = require('../images/zilla.png'); 

class AppComponent extends React.Component { 
    render() { 
    return (
     <div> 
      <img src={yeomanImage} alt="Yeoman Generator" /> 
      <h1 className="title"></h1> 
      <li> 
      <a href="index2.html" className="a7" >Signin</a> 
      </li> 
      <li> 
      <a href="index.html" className="a7" >Register</a> 
      </li>   
     </div> 

In components folder 

Sector.js

require('styles/sector.css'); 

import React from 'react'; 

let yeomanImage = require('../images/dealzilla.png'); 

let yeomanImaged = require('../images/256.jpg'); 

class AppComponent extends React.Component { 
    constructor(props) { 
     super(props); 

     this.state = { 
     data: 'Initial data...' 
     } 

     this.updateState = this.updateState.bind(this); 

    }; 

    updateState(e) { 
     this.setState({data: e.target.value}); 
    } 
    render() { 


    return (
     <div className="page-wrap"> 
      <h1>not registered?register for free</h1> 
      <div className="profile"> 
      <div className="profile-avatar-wrap"> 
       <img src={yeomanImaged} alt="Yeoman Generator" id="profile-avatar" alt="Image for Profile"/> 
      </div> 
      <div className="location">upload avatar</div>    
      </div> 
      <h3>You could do this with a file input too...</h3> 
     <div> 
      <input type = "text" value = {this.state.data} 
       onChange = {this.updateState} /> 
      <h4>{this.state.data}</h4> 
     </div> 
    </div> 

在組件文件夾

homepage.js

import React from 'react'; 

let yeomanImage = require('../images/dealzilla.png'); 

class AppedComponent extends React.Component { 
    render() { 
    return (
     <div> 
      <img src={yeomanImage} alt="Yeoman Generator" /> 
      <h1 className="title">dealzilla</h1> 
      <li> 
      <a href="index2.html" className="a7" >Search</a> 
      <a href="index2.html" className="a7" >Search</a> 
      </li> 
      <li> 
      <a href="index.html" className="a7" >Register</a> 
      </li>  
     </div> 
    ); 
    } 
} 

AppedComponent.defaultProps = { 
}; 

export default AppedComponent; 

的問題是,我不能夠使用homepage.js組件 我home.html的 頁它沒有出現在所有但我 主.js組件是能夠出現

我仍然是一個初學者的反應,我已經四處尋找答案,並沒有在這方面找到任何 任何幫助,將不勝感激 謝謝你我N使 問候

+0

發生反應來使用我很好奇爲什麼你的所有組件具有相同的名稱?當嘗試在同一頁面中使用多個組件時,這很可能會導致您遇到問題。你有沒有爲你的組件命名一個不同的命名? –

+0

嗨Sandwichz我改變了名稱,我仍然得到相同的results.it在我看來,就好像reactlibrary在我的部分是不一致的,因爲當改變我的組件名稱時,組件不會再出現在html頁面上。只有一個組件作品,那是Main.js之一。 –

回答

相關問題