2014-11-13 3 views
1

Я использую uncontrolled form input components в проекте, и иногда мне нужно очистить значение на одном входе/группе входов. Я обнаружил, что один простой способ сделать это - вручную обновить атрибут key компонента.Можно ли вручную изменить ключ компонента ReactJS?

Это работает, но это плохая практика? Должен ли я беспокоиться о проблемах с производительностью/памятью при ручном смене ключей?

ответ

2

React использует ключи, чтобы найти «тот же» элемент, когда он отличается от виртуального DOM. Изменение ключа работает, потому что оно трюки Реагирует на то, что ваш вход является новым элементом. В больших масштабах это повлияет на вашу производительность, так как React будет создавать &, уничтожая элементы DOM, а не только изменяя измененные атрибуты. В небольших масштабах вы, вероятно, не увидите заметных результатов.

Если вы очищаете значение, мне кажется, что у вас действительно нет неконтролируемого ввода на ваших руках. В конце концов, вы «контролируете» его, в некоторой степени. Однако, если это ваша единственная причина для касания значения ввода, я могу понять, почему оставить его «неконтролируемым» будет привлекательным. Я не тестировал это, но я думаю, что вы должны иметь возможность устанавливать значение в пустую строку программным путем, предоставляя элементу ref и доступ к элементу DOM таким образом ... Мое предположение состоит в том, что, поскольку оно неконтролируемо, React doesn Не обращайте внимания на атрибут value при разграничении/рендеринге.

+0

Я понимаю, что это не является неконтролируемым компонентом, и да, я могу потенциально использовать 'ref' plus' getDOMNode() 'для обновления значения на входах - это намного проще изменить ключ:) Я, вероятно, должен просто переключиться на использование контролируемых компонентов. Спасибо за ваш вклад! – ncherro

Смежные вопросы