Skip to content

Добавить чтение параметров - #12

Open
mirout wants to merge 2 commits into
irdkwmnsb:masterfrom
mirout:master
Open

Добавить чтение параметров#12
mirout wants to merge 2 commits into
irdkwmnsb:masterfrom
mirout:master

Conversation

@mirout

@mirout mirout commented Jun 18, 2023

Copy link
Copy Markdown
Collaborator

Так я сделал какой-то набросок по вводу параметров,
В принципе я добавил компонент для ввода и три валидатора для string, number и array.
Опыта особо с ts нет, поэтому не особо знаю всяких его соглашений и тп, так что можно смело ревьюить по полной

#1

@mirout mirout changed the title Add parameters MVP Добавить чтение параметров Jun 18, 2023
Comment thread src/lib/params.tsx
error: boolean
}

export class ParameterComponent<T> extends React.Component<ParameterProps<T>, State<T>> {

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Классовые компоненты - зло.
Давай перепишем на функциональные?
А ещё кажется что это не должно быть в lib
в lib скорее должно быть всё что нужно для алгоритмов
Давай компоненты для отрисовки вынесем в папочку components и будем делать по одному семантически важному компоненту в файле?

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Да, парадигма реакта сложная
Но в то же время достаточно простая и минималистичная.
Нужно просто немного по-другому думать.
Если нужно - я могу это доделать

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • если мы вынесем это из lib то можно будет более логично описать стили для того чтобы сделать красиво

return <div>
<button onClick={() => doStart([[5, 4, 3, 2, 1]], false)}>Start</button>
<button onClick={() => doStart([[5, 4, 3, 2, 1]], true)}>Run Full</button>
<ul>{components}</ul>

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Когда рисуешь список компонентов каждому нужно указывать key=...


const propArr = {
label: "массив",
value: new Arr<number, Num>(new Num())

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Семантически непонятно - зачем передавать сначала number - тип, а потом Num - класс который по сути боксит значение при валидации
Может переименуем классы в ValidNum или SafeNum или во что то другое?

value: new Arr<number, Num>(new Num())
}

const components = [<ParameterComponent<number[]> {...propArr} />].map((v) => <li>{v}</li>);

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Если честно, то такая конструкция мне немного режет глаза :)
Давай перенесем map в return?
Или сделаем компонент для того чтобы рендерить несколько параметров через children?
Там же можно будет и стили накидать

@irdkwmnsb

Copy link
Copy Markdown
Owner

Отличная работа!

@irdkwmnsb

Copy link
Copy Markdown
Owner

Переоткрываю PR чтобы стриггерить деплой на github pages

@irdkwmnsb irdkwmnsb closed this Jun 19, 2023
@irdkwmnsb irdkwmnsb reopened this Jun 19, 2023
@irdkwmnsb

Copy link
Copy Markdown
Owner

Ещё раз

@irdkwmnsb irdkwmnsb closed this Jun 19, 2023
@irdkwmnsb irdkwmnsb reopened this Jun 19, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants