所以我有一个正常的工作时间
react-modal
从那以后,我一直在做的就是给应用程序添加样式。
现在,我打开modal的按钮不起作用。
我在两份文件中查找了问题所在。
决策树。js:
import React from 'react';
import AddOption from './AddOption';
import Header from './Header';
import Action from './Action';
import Options from './Options';
import OptionModal from './OptionModal';
export default class DecisionTreeApp extends React.Component {
state = {
options: [],
selectedOption: undefined
};
handleDeleteOptions = () => {
this.setState(() => ({
options: []
}));
};
handleDeleteOption = optionToRemove => {
this.setState(prevState => ({
options: prevState.options.filter(option => optionToRemove !== option)
}));
};
handleClearSelectedOption = () => {
this.setState(() => ({ selectedOption: undefined }));
};
handlePick = () => {
const randomNum = Math.floor(Math.random() * this.state.options.length);
const option = this.state.options[randomNum];
this.setState(() => ({
selectedOption: option
}));
};
handleAddOption = option => {
if (!option) {
return 'Enter valid value to add item';
} else if (this.state.options.indexOf(option) > -1) {
return 'This option already exists';
}
this.setState(prevState => ({
options: prevState.options.concat(option)
}));
};
componentDidMount() {
try {
const json = localStorage.getItem('options');
const options = JSON.parse(json);
if (options) {
this.setState(() => ({ options }));
}
} catch (e) {
// Do nothing at all
}
}
componentDidUpdate(prevProps, prevState) {
if (prevState.options.length !== this.state.options.length) {
const json = JSON.stringify(this.state.options);
localStorage.setItem('options', json);
}
}
componentWillUnmount() {
console.log('componentWillUnmount');
}
render() {
const subtitle = 'For binary life decisions, put your trust in a computer';
return (
<div>
<Header subtitle={subtitle} />
<div className="container">
<Action
hasOptions={this.state.options.length > 0}
handlePick={this.handlePick}
/>
<div className="widget">
<Options
options={this.state.options}
handleDeleteOptions={this.handleDeleteOptions}
handleDeleteOption={this.handleDeleteOption}
/>
<AddOption handleAddOption={this.handleAddOption} />
</div>
</div>
<OptionModal
selectedOption={this.state.selectedOption}
handleClearSelectedOption={this.handleClearSelectedOption}
/>
</div>
);
}
}
或者选择模式。js:
import React from 'react';
import Modal from 'react-modal';
const OptionModal = (props) => (
<Modal
isOpen={!!props.selectedOption}
onRequestClose={props.handleClearSelectedOption}
contentLabel="Selected Option"
closeTimeoutMS={200}
className="modal"
>
<h3>Selected Option</h3>
{props.selectedOption && <p>{props.selectedOption}</p>}
<button onClick={props.handleClearSelectedOption}>Okay</button>
</Modal>
);
export default OptionModal;
我在上面的任何代码中都没有看到任何语法错误。你们有谁看到语法错误吗?
在控制台中,我收到以下警告:
警告:React无法识别
Click
支持DOM元素。如果有意希望它作为自定义属性出现在DOM中,请将其拼写为小写
click
相反如果意外地从父组件传递了它,请将其从DOM元素中删除。
但我不相信我用过
点击
道具在我的代码中的任何地方。我甚至找了一个,但我没看到。
当我使用react-dev工具和检查
状态
,当我按下按钮时,我看不到任何变化,只是当我添加选项时:
这是我的
Action.js
文件:
import React from 'react';
const Action = (props) => (
<div>
<button
className="big-button"
onClick={props.handlePick}
disabled={!props.hasOptions}
>
What should I do?
</button>
</div>
);
export default Action;