Javascript 使用对象分解解决问题

Javascript 使用对象分解解决问题,javascript,reactjs,react-redux,Javascript,Reactjs,React Redux,见鬼, 我是个新手,在将代码提交到GitHub时遇到了问题。当我遇到以下错误时,请任何人帮我解决。下面是代码和错误消息 第163行到第192行在使用对象解构时出现问题 import React from 'react'; const scaleNames = { sd: 'Sodium (mg)', sl: 'Salt (g)' }; interface SSConverterProps { onRecommendedChange?: any; recomme

见鬼, 我是个新手,在将代码提交到GitHub时遇到了问题。当我遇到以下错误时,请任何人帮我解决。下面是代码和错误消息

第163行到第192行在使用对象解构时出现问题

import React from 'react';

const scaleNames = {
    sd: 'Sodium (mg)',
    sl: 'Salt (g)'
};

interface SSConverterProps {
    onRecommendedChange?: any;
    recommended?: any;
    scale?: any;
}

interface SSConverterStates {
    recommended: any;
    scale: any;
    RecommendedInput?: any;
}


function toSodium(salt) {
    return (salt * 1000) / 2.5;
}

function toSalt(sodium) {
    return (sodium * 2.5) / 1000;
}

function tryConvert(recommended, convert) {
    const input = parseFloat(recommended);
    if (Number.isNaN(input)) {
        return '';
    }
    const output = convert(input);
    const rounded = Math.round(output * 1000) / 1000;
    return rounded.toString();
}

function RecommendedVerdict(props: { sodium: number }) {
    if (props.sodium < 500) {
        return (
            <div>
                <h3>
                    0 - 1.25 grams of salt (this is less than a quarter of your
                    recommended daily intake)
                </h3>
                <p>
                    Australian adults are recommended to consume less than 5g
                    (less than 1 teaspoon) of salt a day.
                </p>
                <p>
                    For more information call our Heart Foundation Helpline on
                    13 11 12.
                </p>
            </div>
        );
    }
    if (props.sodium >= 500 && props.sodium < 1000) {
        return (
            <div>
                <h3>
                    1.25 - 2.5 grams of salt (this is approaching half of your
                    recommended daily intake)
                </h3>
                <p>
                    Australian adults are recommended to consume less than 5g
                    (less than 1 teaspoon) of salt a day.
                </p>
                <p>
                    For more information call our Heart Foundation Helpline on
                    13 11 12.
                </p>
            </div>
        );
    }
    if (props.sodium >= 1000 && props.sodium < 1500) {
        return (
            <div>
                <h3>
                    2.5 - 3.75 grams of salt (this is over half of your
                    recommended daily intake)
                </h3>
                <p>
                    Australian adults are recommended to consume less than 5g
                    (less than 1 teaspoon) of salt a day.
                </p>
                <p>
                    For more information call our Heart Foundation Helpline on
                    13 11 12.
                </p>
            </div>
        );
    }
    if (props.sodium >= 1500 && props.sodium < 2000) {
        return (
            <div>
                <h3>
                    3.75 - 5 grams of salt (this is approaching your recommended
                    daily intake)
                </h3>
                <p>
                    Australian adults are recommended to consume less than 5g
                    (less than 1 teaspoon) of salt a day.
                </p>
                <p>
                    For more information call our Heart Foundation Helpline on
                    13 11 12.
                </p>
            </div>
        );
    }
    if (props.sodium === 2000) {
        return (
            <div>
                <h3>
                    5 grams of salt (this is more than your recommended daily
                    intake)
                </h3>
                <p>
                    Australian adults are recommended to consume less than 5g
                    (less than 1 teaspoon) of salt a day.
                </p>
                <p>
                    For more information call our Heart Foundation Helpline on
                    13 11 12.
                </p>
            </div>
        );
    }
    if (props.sodium > 2000) {
        return (
            <div>
                <h3>
                    5 grams of salt or more (this is more than your recommended
                    daily intake)
                </h3>
                <p>
                    Australian adults are recommended to consume less than 5g
                    (less than 1 teaspoon) of salt a day.
                </p>
                <p>
                    For more information call our Heart Foundation Helpline on
                    13 11 12.
                </p>
            </div>
        );
    }
    return <p> </p>;
}


class RecommendedInput extends React.Component<SSConverterProps, SSConverterStates> {
    public constructor(props: Readonly<SSConverterProps>) {
        super(props);
        this.handleChange = this.handleChange.bind(this);
    }

    public handleChange(e) {
        this.props.onRecommendedChange(e.target.value);
    }

    public render() {
        const recommended = this.props.recommended;
        const scale = this.props.scale;
        return (
            <div className="__field">
                <label>{scaleNames[scale]}</label>
                <input value={recommended} onChange={this.handleChange} />
            </div>
        );
    }
}

class SSConverter extends React.Component<SSConverterProps, SSConverterStates> {
    public constructor(props: Readonly<SSConverterProps>) {
        super(props);
        this.handleSodiumChange = this.handleSodiumChange.bind(this);
        this.handleSaltChange = this.handleSaltChange.bind(this);
        this.state = { recommended: '', scale: 'sd' };
    }

    public handleSodiumChange(recommended) {
        this.setState({ scale: 'sd', recommended });
    }

    public handleSaltChange(recommended) {
        this.setState({ scale: 'sl', recommended });
    }

    public render() {
        const scale = this.state.scale;
        const recommended = this.state.recommended;
        const sodium =
            scale === 'sl' ? tryConvert(recommended, toSodium) : recommended;
        const salt =
            scale === 'sd' ? tryConvert(recommended, toSalt) : recommended;

        return (
            <div>
                <h2
                    className="f_avalon_mid_large"
                    id="convert_sodium_to_salt_or_vice_versa_21"
                >
                    Convert Sodium to Salt or vice versa.
                </h2>
                <div className="inputField">
                    <RecommendedInput
                        scale="sd"
                        recommended={sodium}
                        onRecommendedChange={this.handleSodiumChange}
                    />
                    <RecommendedInput
                        scale="sl"
                        recommended={salt}
                        onRecommendedChange={this.handleSaltChange}
                    />
                </div>
                <RecommendedVerdict sodium={parseFloat(sodium)} />
            </div>
        );
    }
}

export default SSConverter;
从“React”导入React;
常量刻度线={
sd:“钠(mg)”,
sl:‘盐(g)’
};
接口SSConverterProps{
关于建议的变更?:任何;
推荐?:任何;
比例?:任何;
}
接口SSConverterStates{
建议:任何;
规模:任何;
推荐输入?:任何;
}
对钠(盐)的作用{
返回(盐*1000)/2.5;
}
对盐(钠)的作用{
返回(钠*2.5)/1000;
}
功能tryConvert(推荐,转换){
const input=parseFloat(推荐);
if(编号为isNaN(输入)){
返回“”;
}
常量输出=转换(输入);
常量取整=数学取整(输出*1000)/1000;
返回四舍五入的.toString();
}
功能推荐判定(属性:{钠:数字}){
如果(钠含量<500){
返回(
0-1.25克盐(这不到你体重的四分之一
推荐每日摄入量)

建议澳大利亚成年人食用少于5克的食物
(每天少于1茶匙)盐。

更多信息请致电我们的心脏基金会热线 13 11 12.

); } 如果(原料钠>=500和原料钠<1000){ 返回( 1.25-2.5克盐(这接近你身体的一半 推荐每日摄入量) 建议澳大利亚成年人食用少于5克的食物 (每天少于1茶匙)盐。

更多信息请致电我们的心脏基金会热线 13 11 12.

); } 如果(原料钠>=1000和原料钠<1500){ 返回( 2.5-3.75克盐(这是你体重的一半以上 推荐每日摄入量) 建议澳大利亚成年人食用少于5克的食物 (每天少于1茶匙)盐。

更多信息请致电我们的心脏基金会热线 13 11 12.

); } 如果(钠含量>=1500和钠含量<2000){ 返回( 3.75-5克盐(这接近你的推荐量 每日摄入量) 建议澳大利亚成年人食用少于5克的食物 (每天少于1茶匙)盐。

更多信息请致电我们的心脏基金会热线 13 11 12.

); } 如果(道具钠===2000){ 返回( 5克盐(这比你推荐的每日食盐量多 (取水口) 建议澳大利亚成年人食用少于5克的食物 (每天少于1茶匙)盐。

更多信息请致电我们的心脏基金会热线 13 11 12.

); } 如果(道具钠>2000){ 返回( 5克盐或更多(这比你推荐的要多 每日摄入量) 建议澳大利亚成年人食用少于5克的食物 (每天少于1茶匙)盐。

更多信息请致电我们的心脏基金会热线 13 11 12.

); } 返回

; } 类RecommendeInput扩展了React.Component{ 公共构造函数(道具:只读){ 超级(道具); this.handleChange=this.handleChange.bind(this); } 公共交通更改(e){ 此.props.onRecommendedChange(即目标值); } 公共渲染(){ const recommended=this.props.recommended; const scale=this.props.scale; 返回( {scaleNames[scale]} ); } } 类SSConverter扩展React.Component{ 公共构造函数(道具:只读){ 超级(道具); this.handleSodiumChange=this.handleSodiumChange.bind(this); this.handleSaltChange=this.handleSaltChange.bind(this); this.state={建议:'',刻度:'sd'}; } 公共手持SodiumChange(推荐){ this.setState({scale:'sd',recommended}); } 公共把手AltChange(推荐){ this.setState({scale:'sl',recommended}); } 公共渲染(){ const scale=this.state.scale; const recommended=this.state.recommended; 常量钠= 比例=='sl'?tryConvert(推荐,toSodium):推荐; 恒盐= 标度==“sd”?tryConvert(推荐,toSalt):推荐; 返回( 将钠转化为盐,反之亦然。
const scale = this.state.scale;
const recommended = this.state.recommended;
const scale = this.props.scale;
const recommended = this.props.recommended;
const { scale, recommended } = this.state;
const { scale, recommended } = this.props;