onChange 函数在带有 react-rails 的 erb 中的 react 组件中不起作用
onChange function not working in a react component in a erb with react-rails
我正在使用 rails 5.1.7 和 react-rails gem,在我的一个 erb 视图中使用 react_component() helper 我正在尝试使 onChange 事件起作用,但该函数没有以任何方式响应。我应该能够看到控制台日志,但我没有看到。
import React from "react"
import PropTypes from "prop-types"
class CardList extends React.Component {
constructor(props) {
super(props);
this.state = {
all_cards: this.props.all_cards,
orderBy: 'all',
};
this.handleChange = this.handleChange.bind(this);
}
handleChange(event) {
console.log('change was made');
}
render () {
const allData = this.state.all_cards.map((card, index) => (
<div className="col-md-12">
{ card.category }
</div>
));
return (
<React.Fragment>
<label for="order">Order</label>
<select onChange={this.handleChange} name="order" id="order_filter">
<option value="element1">element1</option>
<option value="element2">element2</option>
</select>
{allData}
</React.Fragment>
);
}
}
CardList.propTypes = {
all_cards: PropTypes.array
};
export default CardList
在我看来该组件被称为:
<%= react_component("cardlist", { all_cards: @all_cards }, {prerender: true}) %>
如果我尝试将以下内容添加到 serverRendering.js 文件中:
ReactRailsUJS.mountComponents()
我在组件应该挂载的页面中收到此错误:
ExecJS::ProgramError in Cards#index
ReferenceError: document is not defined
我也尝试过用 <div>
标签替换 React.Fragment
或更改 handleChange
中的状态
我正在使用 rails 5.1.7 和 react-rails gem,在我的一个 erb 视图中使用 react_component() helper 我正在尝试使 onChange 事件起作用,但该函数没有以任何方式响应。我应该能够看到控制台日志,但我没有看到。
import React from "react"
import PropTypes from "prop-types"
class CardList extends React.Component {
constructor(props) {
super(props);
this.state = {
all_cards: this.props.all_cards,
orderBy: 'all',
};
this.handleChange = this.handleChange.bind(this);
}
handleChange(event) {
console.log('change was made');
}
render () {
const allData = this.state.all_cards.map((card, index) => (
<div className="col-md-12">
{ card.category }
</div>
));
return (
<React.Fragment>
<label for="order">Order</label>
<select onChange={this.handleChange} name="order" id="order_filter">
<option value="element1">element1</option>
<option value="element2">element2</option>
</select>
{allData}
</React.Fragment>
);
}
}
CardList.propTypes = {
all_cards: PropTypes.array
};
export default CardList
在我看来该组件被称为:
<%= react_component("cardlist", { all_cards: @all_cards }, {prerender: true}) %>
如果我尝试将以下内容添加到 serverRendering.js 文件中:
ReactRailsUJS.mountComponents()
我在组件应该挂载的页面中收到此错误:
ExecJS::ProgramError in Cards#index
ReferenceError: document is not defined
我也尝试过用 <div>
标签替换 React.Fragment
或更改 handleChange