私はFlexibleInputと呼ばれるステートレスコンポーネントを持っています。ReactDOM Refの値をリセットする子供たち(ベストプラクティス?)
import React, { PropTypes } from 'react'
export default function FlexibleInput({
id,
label,
defaultValue,
type,
onChange,
}){
let fieldClass = `${id}-field`
return (
<fieldset className={fieldClass}>
<label htmlFor={id}>{label}</label>
<input
key={id}
id={id}
type={type}
defaultValue={defaultValue}
onChange={onChange}
/>
</fieldset>
)
}
FlexibleInput.propTypes = {
id: PropTypes.string.isRequired,
label: PropTypes.string.isRequired,
defaultValue: PropTypes.string.isRequired,
type: PropTypes.string.isRequired, // accepts "text", "password" atm.
onChange: PropTypes.func.isRequired,
}
私はこのFlexibleInputをAddNoteというフォームで使用します。
<form
className="note-list__add-note"
onSubmit={this.addNote}
ref={`${this.props.type}-addNoteForm`}
>
<FlexibleInput
id="note"
label="Awaiting changes..."
type="text"
defaultValue=""
onChange={(e) => this.setState({ content: e.target.value })}
/>
this.addNote機能を使用して送信した後...私はFlexibleInput入力値をリセットできるようにしたいと思います。私は醜いお尻のハックバージョンを行うことができた
...適切に値をリセットするために管理し
this.refs[`${this.props.type}-addNoteForm`]
.childNodes[0].childNodes[1].value = ''
。 FlexibleInputの構造が変更される可能性があるため、これは変更される傾向がありますか?私は知らない、うまくいけない。
しかし、私の主な質問は、私は
this.refs[bla bla].find(#input)
かそこらの並べ替えを行うことができます方法はありますか?
ref
のAPIはReact/ReactDOMのドキュメントではあまり明確ではありません。
ありがとうございました!
これを前に試してみたところ、「値」を編集することはできませんでしたが、今は(数か月後)私がこれをやっていると予想通りに動作しています。私の最後か何かにバグがあったかどうかは確かではありませんが、コントロールされたコンポーネントを使うことはやり方だと思われます!ありがとう:) –
使用しているReactのバージョンを覚えていますか?いずれにしても私は助けてくれるのがうれしい! – Pineda
残念ながら。私はそれが状態を適切に縛ることができなかったかもしれないと信じていて、まだライブ編集や入力の価値への変化が見えないように小道具を使用していました。 –