4
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 코드를 다시 작성하십시오. 그것은 완전히 다른 구성 요소 집합을 가지고 있습니다. 어떤 지역은 합리적입니다. –