为什么 switch 函数在 reactjs 中不起作用?
why is the switch function not working in reactjs?
我不明白为什么我会收到错误消息(默认情况),即使我点击了 + - ÷ * ??
是不是应该像我在开关盒中定义的那样设置状态?我认为它会设置状态
这是我的代码,请告诉我我做错了什么??
class App extends React.Component {
constructor(props){
super(props);
this.state={
num:[],
sign:"",
res:0
}
this.handleclick=this.handleclick.bind(this);
this.handelAssign=this.handelAssign.bind(this);
}
handleclick(ele) {
this.setState({ num: [...this.state.num, ele] });
this.handelAssign(ele);
};
handelAssign = (operator) => {
/**operatior could be + - * ÷ */
switch (operator) {
case operator === "+":
this.setState({ operator: "+" });
break;
case operator === "-":
this.setState({ operator: "-" });
break;
case operator === '*':
this.setState({ operator: "*" });
break;
case operator === "÷":
this.setState({ operator: "/" });
break;
default:
throw new Error('sorry you must enter a valid operator')
}};
render() {
const buttons = ["÷", 1, 2, 3, "*", 4, 5, 6,"+", 7, 8, 9, ".", 0, "-"];
let allbuttons="";
return (
<div className="calculation-grid">
<div className="output">
<div className="previous-operand">{this.state.num}</div>
<div className="current-operand"></div>
</div>
<button className="span-two">AC</button>
<button>DEL</button>
{allbuttons=buttons.map((ele)=><button onClick={()=>this.handleclick(ele) } key={ele}>{ele}</button>)}
<button className="span-two">=</button>
</div>
);
}
}
你能试试这个吗:
handelAssign = (operator) => {
/**operatior could be + - * ÷ */
switch (operator) {
case "+":
this.setState({ operator: "+" });
break;
case "-":
this.setState({ operator: "-" });
break;
case '*':
this.setState({ operator: "*" });
break;
case "÷":
this.setState({ operator: "/" });
break;
default:
throw new Error('sorry you must enter a valid operator')
}};
尝试从 switch case 中删除条件
handelAssign = (operator) => {
/**operatior could be + - * ÷ */
switch (operator) {
case "+":
this.setState({ operator: "+" });
break;
case "-":
this.setState({ operator: "-" });
break;
case "*":
this.setState({ operator: "*" });
break;
case "÷":
this.setState({ operator: "/" });
break;
default:
throw new Error('sorry you must enter a valid operator')
}};
我不明白为什么我会收到错误消息(默认情况),即使我点击了 + - ÷ * ?? 是不是应该像我在开关盒中定义的那样设置状态?我认为它会设置状态
这是我的代码,请告诉我我做错了什么??
class App extends React.Component {
constructor(props){
super(props);
this.state={
num:[],
sign:"",
res:0
}
this.handleclick=this.handleclick.bind(this);
this.handelAssign=this.handelAssign.bind(this);
}
handleclick(ele) {
this.setState({ num: [...this.state.num, ele] });
this.handelAssign(ele);
};
handelAssign = (operator) => {
/**operatior could be + - * ÷ */
switch (operator) {
case operator === "+":
this.setState({ operator: "+" });
break;
case operator === "-":
this.setState({ operator: "-" });
break;
case operator === '*':
this.setState({ operator: "*" });
break;
case operator === "÷":
this.setState({ operator: "/" });
break;
default:
throw new Error('sorry you must enter a valid operator')
}};
render() {
const buttons = ["÷", 1, 2, 3, "*", 4, 5, 6,"+", 7, 8, 9, ".", 0, "-"];
let allbuttons="";
return (
<div className="calculation-grid">
<div className="output">
<div className="previous-operand">{this.state.num}</div>
<div className="current-operand"></div>
</div>
<button className="span-two">AC</button>
<button>DEL</button>
{allbuttons=buttons.map((ele)=><button onClick={()=>this.handleclick(ele) } key={ele}>{ele}</button>)}
<button className="span-two">=</button>
</div>
);
}
}
你能试试这个吗:
handelAssign = (operator) => {
/**operatior could be + - * ÷ */
switch (operator) {
case "+":
this.setState({ operator: "+" });
break;
case "-":
this.setState({ operator: "-" });
break;
case '*':
this.setState({ operator: "*" });
break;
case "÷":
this.setState({ operator: "/" });
break;
default:
throw new Error('sorry you must enter a valid operator')
}};
尝试从 switch case 中删除条件
handelAssign = (operator) => {
/**operatior could be + - * ÷ */
switch (operator) {
case "+":
this.setState({ operator: "+" });
break;
case "-":
this.setState({ operator: "-" });
break;
case "*":
this.setState({ operator: "*" });
break;
case "÷":
this.setState({ operator: "/" });
break;
default:
throw new Error('sorry you must enter a valid operator')
}};