gpt4 book ai didi

reactjs - 我们可以将 React 组件集成到 Aurelia 项目中吗?

转载 作者:行者123 更新时间:2023-12-03 13:40:19 25 4
gpt4 key购买 nike

我创建了一个 React 组件,并使用 webpack 构建它并部署在服务器上。我想将此组件集成到 Aurelia 项目中。

我尝试使用以下 npm 模块: https://www.npmjs.com/package/aurelia-react-loader

在上面提到的模块中,组件名称需要传递到html文件中。就像示例 my-react-component.js 传递到 html 文件中一样。

但是我的 React 组件正在使用以下代码加载到 html 标签的根目录中:

    import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
ReactDOM.render((
<App/>
), document.getElementById('root'));

运行 webpack 模块后,它会创建一个名为 index_bundle.js 文件的 JavaScript 文件。这里导入的App模块是主要的js组件。它通过 ReactDOM 渲染到根元素上的 index.html 中。

所以我不确定,如何将 React 组件链接或 url 集成到 Aurelia 应用程序中?

如果您有任何疑问,请告诉我。我可以详细解释一下。

提前致谢。哈里什

最佳答案

是的,将 React 组件集成到 Aurelia 应用程序中确实很容易。看看我的项目,我在这里做的就是:https://github.com/ashleygrant/aurelia-loves-react

我什至没有使用你提到的加载器插件。

以下是如何将第三方 React 组件包装在 Aurelia 自定义元素中:

import React from 'react';
import ReactDOM from 'react-dom';
import ReactDatePicker from 'react-datepicker';
import { noView, bindable, inject } from 'aurelia-framework';

@noView(['react-datepicker/react-datepicker.css'])
@inject(Element)
export class DatePicker {
@bindable selectedDate;
@bindable onChange;

constructor(element) {
this.element = element;
}

selectedDateChanged() {
this.render();
}

render() {
ReactDOM.render(
<ReactDatePicker
selected={this.selectedDate}
onChange={date => this.onChange({ date: date })}
/>,
this.element
);
}

// How to use native DOM events to pass the changed date
/*render() {
ReactDOM.render(
<ReactDatePicker
selected={this.selectedDate}
onChange={date => {
let event = new CustomEvent('change', { 'detail': date });
// Dispatch the event.
this.element.dispatchEvent(event);
}
}
/>,
this.element
);
}*/
}

以下是使用 Aurelia 项目一部分的自定义 React 组件时的操作方法:

import React from 'react';
import ReactDOM from 'react-dom';
import { noView, bindable, inject } from 'aurelia-framework';
import FormattedDate from '../react-components/formatted-date';

@noView()
@inject(Element)
export class ReactDate {
@bindable date;
@bindable format = 'dddd, MMMM D, YYYY';

constructor(element) {
this.element = element;
}

dateChanged() {
this.render();
}

formatChanged() {
this.render();
}

render() {
ReactDOM.render(
<FormattedDate
date={this.date}
format={this.format}
/>,
this.element
);
}
}

如您所见,这非常简单。我喜欢手动完成,而不是使用加载器,因为我可以为每个属性设置数据绑定(bind),因此它以更“Aurelia-ey”的方式工作。

关于reactjs - 我们可以将 React 组件集成到 Aurelia 项目中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46282448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com