私はIonic2-Angular4プロジェクトにいくつかの反応コンポーネントを含めることを試みていますが、成功することはありません。ビルドに反応を含めるためにイオンスクリプトをオーバーライドする方法は?
{
"compilerOptions": {
"jsx": "react",
"declaration": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": [
"dom",
"es2015"
],
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"target": "es5"
},
"include": [
"src/**/*.ts",
"src/**/*.tsx"
],
"exclude": [
"node_modules"
],
"compileOnSave": false,
"atom": {
"rewriteTsconfig": false
}
}
そしてwebpack.config.ts以下のとおり:
構築プロセスのために私は、イオンスクリプト"build": "ionic-app-scripts build",
"serve": "ionic-app-scripts serve",
私は、以下のオプションを使用してcompilerOptions tsconfig.jsonにも更新されているを使用しています
var path = require('path');
var webpack = require('webpack');
var ionicWebpackFactory = require(process.env.IONIC_WEBPACK_FACTORY);
module.exports = {
entry: process.env.IONIC_APP_ENTRY_POINT,
output: {
path: '{{BUILD}}',
publicPath: 'build/',
filename: process.env.IONIC_OUTPUT_JS_FILE_NAME,
devtoolModuleFilenameTemplate: ionicWebpackFactory.getSourceMapperFunction(),
},
devtool: process.env.IONIC_SOURCE_MAP_TYPE,
resolve: {
extensions: ['.ts', '.js', '.tsx', '.json'],
modules: [path.resolve('node_modules')]
},
module: {
loaders: [
{
test: /\.json$/,
loader: 'json-loader'
},
{
test: /\.tsx?$/,
loader: process.env.IONIC_WEBPACK_TRANSPILE_LOADER
},
{
test: /\.js$/,
loader: process.env.IONIC_WEBPACK_TRANSPILE_LOADER
}
]
},
plugins: [
ionicWebpackFactory.getIonicEnvironmentPlugin(),
new webpack.EnvironmentPlugin(['IONIC_ENV'])
],
node: {
fs: 'empty',
net: 'empty',
tls: 'empty'
}
};
また、私はpackage.jsonに追加した以下のライブラリ:
"react": "^15.6.1",
"react-dev-utils": "^4.0.1",
"react-dom": "^15.6.1",
"react-redux": "^5.0.6",
"redux": "^3.7.2",
私が構築しようとしていますたびに、ビルドが正常に終了したが、私はエラーを取得しています:
Error: Cannot find module "./TestBar"
て、testbarは、私は角度成分にインポートしようとしていますReactComponentです。コードは
TestBar.tsxファイルについては、以下である:
import * as React from 'react';
import * as ReactDOM from 'react-dom';
import { Injector } from '@angular/core';
import { ValueStore} from './redux/list.store';
import {Model} from './model';
interface ReactChildComponentViewProps {
store: ValueStore;
injector: Injector;
}
let TestBar = React.createClass<ReactChildComponentViewProps, any> ({
getInitialState: function() {
let model: Model = this.props.injector.get(Model);
console.log('Using Angular 2 injector in React body, model.uuid: ' + model);
this.props.store.store.subscribe(() => {
this.setState({
'elements': this.props.store.store.getState()
});
});
return {
'title': this.props.title,
'elements': this.props.store.store.getState()
};
},
render() {
return (
<div>aaaa</div>
);
}
});
export class ReactChildComponentView {
static initialize(store, injector, containerId) {
ReactDOM.render(<TestBar store={store} injector={injector}/>, document.getElementById(containerId));
}
}
が今まで誰かが似た何かをしようとしたことがありますか?
はい、私は知っていますが、可能かどうかを見たいと思っています。私はこれを見ましたhttp://blog.robertjesionek.com/angular-2-and-react-components-within-a-single-app/そして私はそれが本当に簡単だろうと信じました – geo
@lilezek、反応ネイティブは完全なJSX/TSXコードの書き換え。それは全く異なるコンポーネントを持っています。どんなジオが探しているのは合理的です。 –