Как реорганизовать код внутри оператора switch с помощью react?

#reactjs

#reactjs

Вопрос:

Я хочу реорганизовать код для оператора switch с помощью react?

Я должен перечислять сообщения для элементов на основе их типа, например «создано», «удалено», «обновлено», «прокомментировано». Для этого я использую оператор switch. Теперь, если для элемента списка есть переполнение, я добавляю кнопку расширения. Для этого я создал расширяемый компонент, который является общим для всех элементов списка.

Код приведен ниже,

 switch (list.type) {
        case 'created': {
            return (
                <Expandable base_height={50}>
                    <List
                        icon={<Svg/>}
                        text={<Text text={' created '} mname={model} 
                        additional_text={some_text}/>}/>
                </Expandable>
            );
         }
         case 'deleted': {
            return (
                <Expandable base_height={50}>
                    <List
                        icon={<Svg/>}
                        text={<Text text={' deleted '} mname={model} 
                        additional_text={some1_text}/>}/>
                </Expandable> 
            );
         }
         case 'udpated':
         {/*ssooooooooooooo on ''''''''''''*/}
         default:
             return null;
 }
  

Приведенный выше код работает. Как вы видите из приведенного выше кода, расширяемый компонент будет повторяться для каждого случая, как я могу поместить его вне каждого случая, чтобы мне не приходилось повторять один и тот же код для каждого случая? Спасибо.

Ответ №1:

Для каждого динамического значения можно создать переменную и просто обновить значения в соответствующем операторе case. В конце используйте эти переменные и верните JSX.

Вот так:

 let text = '', mname = '', additional_text='';
switch (list.type) {
    case 'created': {
        text = 'created';
        mname = model;
        additional_text = some_text;
        break;
     }
    case 'deleted': {
        text = 'deleted';
        mname = model;
        additional_text = some1_text;
        break;
     }
    case 'udpated':
        {/*ssooooooooooooo on ''''''''''''*/}
    default:
         return null;
}

return (
    <Expandable base_height={50}>
        <List
            icon={<Svg/>}
            text={<Text text={text} mname={mname} 
            additional_text={additional_text} />}/>
    </Expandable>
);