Javascript 是否可以传递';id';属性转换为在React中的onClick属性中传递的函数?

Javascript 是否可以传递';id';属性转换为在React中的onClick属性中传递的函数?,javascript,reactjs,Javascript,Reactjs,我是一个新的反应,我正在尝试建立一个计算器 在所有表示数字的按钮中,我试图使用组件中的方法将“id”(包含字符串,如“nine”)转换为数字。但我不知道如何将id属性的值作为传递给“onClick”属性的函数的参数传递 例如: this.inputNumber(this.id)}>7 有办法吗这个.id似乎没有引用我在同一行中设置的属性 以下是整个(未完成的)组件(如果需要): class Calculator extends Component { state = {

我是一个新的反应,我正在尝试建立一个计算器

在所有表示数字的按钮中,我试图使用组件中的方法将“id”(包含字符串,如“nine”)转换为数字。但我不知道如何将id属性的值作为传递给“onClick”属性的函数的参数传递

例如:

this.inputNumber(this.id)}>7

有办法吗这个.id似乎没有引用我在同一行中设置的属性

以下是整个(未完成的)组件(如果需要):


class Calculator extends Component {
    state = { 
        total: 0
     }

    clearTotal = () => {
        this.setState({total : 0})
    }

    inputNumber = (id) => {
        let total = this.state.total;
        let concat = total === 0 ? this.returnNumber(id) : Number("" + total + this.returnNumber(id));
        this.setState({total : concat})
        console.log(this.returnNumber(id))
    }

    render() { 
        let c = this.getClasses();
        return ( 
        <React.Fragment>
            <div className="container w-25 h-100" >
                <div className="align-items-center">
                <span id="display">{this.state.total}</span>
                <div className="row">
                    <button className={c + 'danger col-6'} id="clear" onClick={this.clearTotal}>AC</button>
                    <button className={c + 'light col'} id="divide">/</button>
                    <button className={c + 'light col'} id="multiply">*</button>
                </div>
                <div className="row">
                    <button className={c + 'secondary col'} id="seven" onClick={() => this.inputNumber(this.id)}>7</button>
                    <button className={c + 'secondary col'} id="eight">8</button>
                    <button className={c + 'secondary col'} id="nine">9</button>
                    <button className={c + 'light col'} id="subtract">-</button>
                </div>
                <div className="row">
                    <button className={c + 'secondary col'} id="four">4</button>
                    <button className={c + 'secondary col'} id="five">5</button>
                    <button className={c + 'secondary col'} id="six">6</button>
                    <button className={c + 'light col'} id="add">+</button>
                </div>
                <div className="row">
                    <div className="col-9">
                        <div className="row">
                        <button className={c + 'secondary col'} id="three">3</button>
                        <button className={c + 'secondary col'} id="two">2</button>
                        <button className={c + 'secondary col'} id="one">1</button>
                        </div>
                        <div className="row">
                        <button className={c + 'secondary col-8'} id="zero">0</button>
                        <button className={c + 'secondary col'} id="decimal">.</button>
                        </div>
                    </div>
                    <div className="col-3">
                        <button className={c + 'info h-100 w-100 col-12'} id="equals">=</button>
                    </div>
                </div>
                </div>
            </div>

        </React.Fragment> );
    }

    getClasses() {
        let b = "border border-dark btn btn-";
        return b
    }

    returnNumber(name) {
        let symbols = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
        let names = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'];
        let index = names.indexOf(name);
        return symbols[index];
    }

}
 
export default Calculator;```

类计算器扩展组件{
状态={
总数:0
}
clearTotal=()=>{
this.setState({total:0})
}
inputNumber=(id)=>{
让total=this.state.total;
让concat=total==0?this.returnNumber(id):Number(“+total+this.returnNumber(id));
this.setState({total:concat})
console.log(此.returnNumber(id))
}
render(){
设c=this.getClasses();
报税表(
{this.state.total}
自动控制
/
*
this.inputNumber(this.id)}>7
8.
9
-
4.
5.
6.
+
3.
2.
1.
0
.
=
);
}
getClasses(){
设b=“边界边界暗btn btn-”;
返回b
}
返回号码(姓名){
设符号=[0,1,2,3,4,5,6,7,8,9];
让名字=['0'、'1'、'2'、'3'、'4'、'5'、'6'、'7'、'8'、'9'];
设index=names.indexOf(name);
返回符号[索引];
}
}
导出默认计算器```


请阅读Reactjs文档,

这并不是您所认为的。这不是JS的工作方式。JMadelaine我假设它不会工作,因为我正在使用classes/React,我之所以把
这个
放在这里,唯一的原因是因为我在Stackoverflow Welcome中看到有人在不同的上下文中建议它。如果你觉得这是正确的答案,请接受。
<button className={c + 'secondary col'} id="seven" onClick={this.inputNumber}>7</button>
inputNumber = (e) => {
        const id = e.target.id; // get id from the event target
        let total = this.state.total;
        let concat = total === 0 ? this.returnNumber(id) : Number("" + total + this.returnNumber(id));
        this.setState({total : concat})
        console.log(this.returnNumber(id))
}
<button className={c + 'secondary col'} id="seven" onClick={(e) => this.inputNumber(e.target.id)}>7</button>
inputNumber = (id) => {
        let total = this.state.total;
        let concat = total === 0 ? this.returnNumber(id) : Number("" + total + this.returnNumber(id));
        this.setState({total : concat})
        console.log(this.returnNumber(id))
}