Bu doğrulama davranışının daha yüksek bir sipariş bileşeninde nasıl doğru bir şekilde uygulanacağını anlamak için uğraşıyorum.React Higher Order Bileşen, sarılmış bileşenin yeniden oluşturulmasını zorlar
===========================================
DÜZENLEME: TLDR: Kullanıcı @ noa-dev 'nin önerisi sayesinde, bir Tepki Oluşturun burada oluşturdum: sorunu göstermek için https://jsfiddle.net/8nLumb74/1/.
Basitçe söylemek gerekirse: Neden bu HOC tarafından sarıldığında metin kutumu düzenleme odaklanmayı kaybediyor?
Neyi yanlış yapıyorum?
metin kutusu bileşeni:
import React from 'react'
export default React.createClass({
changeText(e) {
if (this.props.validate)
this.props.validate(e.target.value)
this.props.update(e.target.value)
},
componentDidMount() {
console.log('should only be fired once')
},
render() {
return (<input type="text"
value={this.props.text}
onChange={this.changeText} />)
}
})
Doğrulayıcı bileşeni:
import React from 'react'
export default function (WrappedComponent) {
const Validation = React.createClass({
validate(text) {
console.log('validating', text)
},
render() {
return (
<WrappedComponent
{...this.props}
validate={this.validate}
/>
)
}
})
return Validation
}
ana formu bileşeni: Form
bileşenin render
yöntemde
import React from 'react'
import TextBox from './text-box'
import Validator from './validator'
export default React.createClass({
getInitialState() {
return ({text: 'oh hai'})
},
update(text) {
this.setState({text})
},
render() {
const ValidatingTextBox = Validator(TextBox)
return (<ValidatingTextBox
text={this.state.text}
update={this.update} />)
}
})
: gibi olası bir
Form
bileşeni görünürdü. Ya da basitçe herhangi bir tekrarlayıcı olmadan onu korumak için aynı bileşende doğrulama işleminizi gerçekleştirin ve sadece bitmiş dizeyi saklamak için yüksek sipariş bileşenine gönderin. –kesinlikle bir teşekkür, ancak şu anda uygulama şu anda (ne zaman redux düzenlenen) küresel durumu (bu örnekte redux düzenlenen) güncelleştirmek için herhangi bir metin değişiklikleri (bu değeri düzenleme bitirmeden önce) bekler, böylece uygulamanın geri kalanı size nasıl görüneceğini tamamlandığında "... –
Yüksek mertebeden bileşen kurulumumda bariz bir şey eksik olduğumdan eminim - yani React neden değer alanını güncellemek yerine tüm girdi DOM öğesini yırtıp dökmesi gerektiğini düşünüyor? –