আমার কাছে নিম্নলিখিত উপাদান রয়েছে ( radioOther.jsx
):
'use strict';
//module.exports = <-- omitted in update
class RadioOther extends React.Component {
// omitted in update
// getInitialState() {
// propTypes: {
// name: React.PropTypes.string.isRequired
// }
// return {
// otherChecked: false
// }
// }
componentDidUpdate(prevProps, prevState) {
var otherRadBtn = this.refs.otherRadBtn.getDOMNode();
if (prevState.otherChecked !== otherRadBtn.checked) {
console.log('Other radio btn clicked.')
this.setState({
otherChecked: otherRadBtn.checked,
});
}
}
onRadChange(e) {
var input = e.target;
this.setState({
otherChecked: input.checked
});
}
render() {
return (
<div>
<p className="form-group radio">
<label>
<input type="radio"
ref="otherRadBtn"
onChange={this.onRadChange}
name={this.props.name}
value="other"/>
Other
</label>
{this.state.otherChecked ?
(<label className="form-inline">
Please Specify:
<input
placeholder="Please Specify"
type="text"
name="referrer_other"
/>
</label>)
:
('')
}
</p>
</div>
)
}
};
ECMAScript6 ব্যবহার করার আগে সব কিছু ঠিকঠাক ছিল, এখন আমি 1 ত্রুটি, 1 সতর্কতা পাচ্ছি এবং আমার ফলোআপ প্রশ্ন রয়েছে:
ত্রুটি: আনকচড প্রকারের ত্রুটি: নালীর সম্পত্তি 'অন্যান্যচেকড' পড়তে পারে না
সতর্কতা: getInitialState রেডিওঅথারে সংজ্ঞায়িত করা হয়েছে, এটি একটি সরল জাভাস্ক্রিপ্ট শ্রেণি। এটি কেবল React.createClass ব্যবহার করে তৈরি ক্লাসগুলির জন্য সমর্থিত। আপনি কি পরিবর্তে কোনও রাষ্ট্রীয় সম্পত্তি সংজ্ঞায়িত করতে চেয়েছিলেন?
যে কেউ ত্রুটিটি কোথায় রয়েছে তা দেখতে পাচ্ছে, আমি জানি এটি ডিওএম-এর শর্তাধীন বিবরণের কারণে হয়েছে তবে দৃশ্যত আমি এর প্রাথমিক মানটি সঠিকভাবে ঘোষণা করছি না?
আমি কি getInitialState স্থিতিশীল করা উচিত
যদি getInitialState সঠিক না হয় তবে আমার প্রপটিপগুলি ঘোষণা করার উপযুক্ত জায়গাটি কোথায়?
হালনাগাদ:
RadioOther.propTypes = {
name: React.PropTypes.string,
other: React.PropTypes.bool,
options: React.PropTypes.array }
module.exports = RadioOther;
@ এসোরালেন, এই কোড:
constructor(props) {
this.state = {
otherChecked: false,
};
}
উত্পাদন করে "Uncaught ReferenceError: this is not defined"
, এবং নীচে যখন এটি সংশোধন করে
constructor(props) {
super(props);
this.state = {
otherChecked: false,
};
}
তবে এখন, অন্য বোতামটি ক্লিক করা এখন ত্রুটি তৈরি করে:
Uncaught TypeError: Cannot read property 'props' of undefined
onChange={this.onRadChange}
,this
যখনonRadChange
ডাকা হয় তখন উদাহরণটিকে বোঝায় না । আপনি বেঁধে callbacks প্রয়োজনrender
বা কন্সট্রাকটর এটা করুন:onChange={this.onRadChange.bind(this)}
।