#javascript #reactjs #react-hooks #use-ref
#язык JavaScript #реагирует на #реагируют-крючки #использование-ссылка
Вопрос:
У меня есть следующие данные, где useRef содержит следующую информацию.
Данные
{ token: '', id: '', versionId: '', additionalId: '' }
Вышесказанное исходит от детей внутри useRef() следующим образом.
const formRef = useRef(); // other logic // above Data const aboveData = formRef.current.children;
Есть ли способ, которым я могу добавить children
, чтобы удерживать overallInfo
блок следующим образом?
{ token: '', // these 3 no longer needed but can remain if no way to delete id: '', versionId: '', additionalId: '', // I want to add this additional block overallInfo: { id: '', versionId: '', additionalId: '' } }
Обновить:
Это форма
const Form = ({ formRef, }) =gt; ( lt;form id="form" ref={formRef} method="POST"gt; lt;input name="token" type="hidden" /gt; lt;input name="id" type="hidden" /gt; lt;input name="versionId" type="hidden" /gt; lt;input name="additionalId" type="hidden" /gt; lt;/formgt; ); export default Form;
В целом информация ниоткуда не поступает. Я намеренно снова оборачиваю эти 3 ключа, потому что клиенту нужно, чтобы они были в таком формате, когда я публикую.
Вот как я это публикую. в настоящее время это неправильно, потому что я не заворачиваю его в общую информацию.
export const PostForm = ( formRef, link, ) =gt; { // formRef.current.children definitely has all the token, // id, versionId and additionalId values at this stage formRef.current.action = link; formRef.current.submit(); };
ПРЕДЛОЖЕНИЕ ПО РЕШЕНИЮ НИЖЕ:
export const PostForm = ( formRef, link, ) =gt; { const updatedRequest = { overallInfo: {}, }; [...formRef.current.children].forEach((child) =gt; { updatedRequest.overallInfo[child.name] = child.value; }); const newRef = useRef(updatedRequest); newRef.current.action = link; newRef.current.submit(); };
Комментарии:
1.
formRef.current.children
будет ли это определено в текущем примере?2. Пожалуйста, обновите вопрос , чтобы показать нам, как вы используете ссылку (я предполагаю
lt;form ref={formRef} ...
, но…). Кроме того, откудаoverallInfo
он взялся и почему вы хотите добавить его в списокchildren
form
(если я правильно догадываюсь)?3. @evolutionxbox Он не будет неопределенным, у него есть значения. Проблема больше в том, как я мог бы обернуть его внутри ключа overallInfo.
4. @T. J. Краудер Я обновил вопрос, чтобы показать, как используется форма и как я ее публикую.
5. @karvai спасибо за обновление вопроса. Ответ Ти Джея Краудера все еще действителен. Вы не можете манипулировать DOM — представлениями HTML, как если бы вы были обычным объектом JS.