Material-ui: [ListItem] rightIconButton: ошибка стиля с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ IconMenu

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 13 Π°ΠΏΡ€. 2016  Β·  4ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: mui-org/material-ui

ЗдравствуйтС,

ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, спасибо Π·Π° ΠΎΡ‚Π»ΠΈΡ‡Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π°Π΄ этой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ;)

Π£ мСня Π΅ΡΡ‚ΡŒ нСсколько ошибок полоТСния ΠΏΡ€ΠΈ использовании настраиваСмых ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ настраиваСмого IconMenu, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π² ListItem.rightIconButton:

// With my custom component
<ListItem>
    [...]
    rightIconButton={<CustomComponentListMenu />}
/>

// CustomComponentListMenu.jsx
[...]
render() {
        return (
            <IconMenu iconButtonElement={this.iconButtonElement} >
                <MenuItem onClick={this.onDelete}>Delete</MenuItem>
            </IconMenu>
        );
    }

IconMenu Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Π½ΠΎ располоТСниС мСню Π·Π½Π°Ρ‡ΠΊΠΎΠ² Π½Π΅ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ (см. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ снимок экрана).

На самом Π΄Π΅Π»Π΅, я Π΄ΡƒΠΌΠ°ΡŽ, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΡΡ‚ΠΈΠ»ΡŒ (position: absolute, right: 4, top: 12) примСняСтся ΠΊ ΠΌΠΎΠ΅ΠΌΡƒ Ρ‚Π΅Π³Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° (<CustomComponentListMenu>), Π° НЕ ΠΊ Ρ‚Π΅Π³Ρƒ IconMenu (<IconMenu>).
Π‘ΠΌ. ListItem.js: 622 (https://github.com/callemall/material-ui/blob/master/src/List/ListItem.js#L622), Π³Π΄Π΅ _rightIconButtonElement_ - это ΠΌΠΎΠΉ настраиваСмый элСмСнт, Π° Π½Π΅ iconMenu.

Π― понимаю, Ρ‡Ρ‚ΠΎ это Π½Π΅ совсСм ошибка, Π½ΠΎ это ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ использовании ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° (Π² этом вСсь смысл React, Π½Π΅ Ρ‚Π°ΠΊ Π»ΠΈ?).

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ эта «ошибка» Ρ‚Π°ΠΊΠΆΠ΅ проявляСтся Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Avatar Π² ListItem.leftAvatar.

Π‘ΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚:
screen-bug-mui-listitem

Как Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅, ΠΌΡ‹ смоТСм Π½Π°ΠΉΡ‚ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСстандартныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹?

ВСрсии

ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»-UI: 0.15.0
РСакция: 14,7
Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€: Chrome, Firefox

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π― Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ испытал Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅ странноС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. Покопавшись Π² этом, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠΎΡ€Ρƒ rightIconButton Π½ΡƒΠΆΠ΅Π½ элСмСнт, Π° Π½Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ rightIconButton={<CustomComponentListMenu />} Π½Π° rightIconButton={(new CustomComponentListMenu).render()} . Для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π±Π΅Π· сохранСния состояния ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ <Component /> -> Component() .

(ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ React.createElement(Component) Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚; я Π½Π΅ разбирался Π² дСталях, ΠΏΠΎΡ‡Π΅ΠΌΡƒ)

Π― Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡Π°Π» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ React, ΠΈ я Π½Π΅ знаю, Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ это ΠΈΠ»ΠΈ Π½Π΅Ρ‚, Π½ΠΎ сообщСниС ΠΎΠ± ошибкС, ΠΊΠΎΠ³Π΄Π° rightIconButton установлСно Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, Π° Π½Π΅ Π½Π° элСмСнт, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π² порядкС, вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π΅Ρ€ΠΏΠ΅Ρ‚ΡŒ Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ Ρ‚Π°ΠΊΠΈΠΌ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΌ способом .

ВсС 4 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π― Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ испытал Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅ странноС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. Покопавшись Π² этом, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠΎΡ€Ρƒ rightIconButton Π½ΡƒΠΆΠ΅Π½ элСмСнт, Π° Π½Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ rightIconButton={<CustomComponentListMenu />} Π½Π° rightIconButton={(new CustomComponentListMenu).render()} . Для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π±Π΅Π· сохранСния состояния ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ <Component /> -> Component() .

(ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ React.createElement(Component) Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚; я Π½Π΅ разбирался Π² дСталях, ΠΏΠΎΡ‡Π΅ΠΌΡƒ)

Π― Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡Π°Π» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ React, ΠΈ я Π½Π΅ знаю, Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ это ΠΈΠ»ΠΈ Π½Π΅Ρ‚, Π½ΠΎ сообщСниС ΠΎΠ± ошибкС, ΠΊΠΎΠ³Π΄Π° rightIconButton установлСно Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, Π° Π½Π΅ Π½Π° элСмСнт, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π² порядкС, вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π΅Ρ€ΠΏΠ΅Ρ‚ΡŒ Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ Ρ‚Π°ΠΊΠΈΠΌ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΌ способом .

Π’Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚Π΅ ...props ? Π£ мСня Π±Ρ‹Π»Π° такая ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с Аватаром. Π― ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽ, Ρ‡Ρ‚ΠΎ MUI устанавливаСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ.

Мой ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Avatar выглядит Ρ‚Π°ΠΊ:

...
const Avatar = (props) => {
  const propsWithoutMember = { ...props };
  delete propsWithoutMember.member;
  return (
    <MUIAvatar {...propsWithoutMember}>{getInitials(props.member)}</MUIAvatar>
  );
};
...

МнС ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ свои собствСнныС ΠΏΡ€ΠΎΠΏΡ‚ΠΈΠΏΡ‹, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΡ…, ΠΈΠ½Π°Ρ‡Π΅ MUI Π±ΡƒΠ΄Π΅Ρ‚ ΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° нСизвСстныС Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Ρ‹.

Π”Π°, это Π±Ρ‹Π»Π° ошибка, связанная с Π½Π°Ρ‡Π°Π»ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с React, Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ...props

ΠœΡ‹ пСрСносим ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π½Π° Π²Π΅Ρ‚ΠΊΡƒ v1-beta . ΠœΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ Π΅Π³ΠΎ с нуля. Π₯отя ΠΌΡ‹ Π½Π΅ тСстировали Π΅Π³ΠΎ, я Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, скорСС всСго, исправлСна ​​в этой Π²Π΅Ρ‚ΠΊΠ΅. Π—Π½Π°Ρ‡ΠΈΡ‚, Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽ.
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ исправлСния PR Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° v1-beta Π½Π΅ Π²ΠΎΠ·ΡŒΠΌΠ΅Ρ‚ Π½Π° сСбя ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ.

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ