【发布时间】:2022-11-16 09:50:57
【问题描述】:
我正在尝试制作一个网页,我想将一些 HTML 和相应的代码压缩成一个反应组件,但如果不创建一个完整的反应应用程序,我似乎无法做到这一点,这对于这个项目来说是不受欢迎的。我按照反应文档中的步骤添加了一个 JSX 预处理器,然后使用脚本标签将反应组件渲染到页面中,但没有任何显示。
在页面的控制台中,它只是显示Uncaught ReferenceError: require is not defined。我尝试使用 browserify 将所有 react 库编译到一个文件中,但它显示为 Error: Can't walk dependency graph: Cannot find module 'reactjs' from '/home/user/code/website/src/slideshow.js'。如果我尝试 npm install reactjs 它会安装 react,并且在编辑代码时既不会给出 react 类的任何定义或描述。
我有点迷茫,完全愿意看起来像个白痴。我的 HTML 和 JS 在下面。
const { React, ReactDOM } = require('react');
const root = ReactDOM.createRoot(document.getElementById("slideshowContainer"));
class Slideshow extends React.Component {
constructor(props) {
super(props);
this.state = {
slide: 1,
}
this.slides = {
1: {
src: './assets/coding.jpeg',
caption: "this is slide 1."
},
2: {
src: './assets/coding2.jpeg',
caption: "this is slide 2."
},
3: {
src: './assets/templimg.jpg',
caption: "this is slide 3."
}
}
}
slideTransitionPrev() {
let ok = Object.keys(this.slides);
if (this.state.slide === 1) {
this.setState({ slide: ok });
} else {
this.setState({ slide: this.state.slide - 1 });
}
}
slideTransitionNext() {
let ok = Object.keys(this.slides);
if (this.state.slide === ok) {
this.setState({ slide: 1 });
} else {
this.setState({ slide: this.state.slide + 1 });
}
}
render() {
return (
<div class="slides fade">
<span class="slidePosition">{this.state.slide} / {Object.keys(this.slides)}</span>
<img style="width: 100%" src={this.slides[this.state.slide].src} />
<button class="prev" onClick={() => this.slideTransitionPrev()}>❮</button>
<button class="next" onClick={() => this.slideTransitionNext()}>❯</button>
<span class="caption">{this.slides[this.state.slide].caption}</span>
</div>
)
}
}
root.render(<Slideshow />);
(boring necessary html stuff)
<body>
<div id="slideshowContainer"></div>
<script src="./src/slideshow.js"></script>
</body>
【问题讨论】:
标签: javascript html reactjs