今日、問題が発生しました。次のコンポーネントを検討してください。
_export default class Input extends React.Component {
someFunction() {
console.log(this.props.value)
}
render () {
const { type, value, required } = this.props
return (
<div className={cx('Input')}>
<input type={type} value={value} required={required} />
</div>
)
}
}
_
_this.props
_を正常に破棄し、レンダリング内で使用できますが、その外部、つまりsomeFunction()
内でprop値を使用する必要がある場合はどうなりますか? _constant { ... }
_を移動し、_export default class Input extends React.Component {
_行の直後に含めます。これはまだ有効ですか?
それを外部に移動すると、コンストラクターが呼び出されなかったため、nullになります。
親コンポーネントが状態を変更して子が再レンダリングされる可能性があるため、レンダリングまたは機能を維持することをお勧めします。したがって、レンダリングごとに新しい小道具が必要です。
コンポーネント全体のthis.propsを正しく破壊する
まあ、それはできません。分解ではローカル変数のみを割り当てることができるため、各関数でprops
を分解する必要があります。それ以外の場合は、this.props.value
を記述しなければならないことに何の問題もありません。 this.props
と入力したくないという理由だけでなく、読みやすくなる場合は破棄を使用します。
私はあなたのコードをこのように書きます
// import cx from whatever
const someFunction = value=> console.log(value)
export const Input = ({type, value, required}) => (
someFunction(value),
<div className={cx('Input')}>
<input type={type} value={value} required={required} />
</div>
)
多分それを機能的なコンポーネントに更新することを検討してください。
function someFunction(props) {
console.log(props.value)
}
function Input(props) {
const { type, value, required } = props;
someFunction(props); // logs props.value
return (
<div className={cx('Input')}>
<input type={type} value={value} required={required} />
</div>
)
}
export default Input;