अंदर मेरे प्रस्तुत करना() मैं इन:में एक मौजूदा राज्य संक्रमण त्रुटि दौरान अद्यतन कर सकता हूँ नहीं प्रतिक्रिया
<button onClick={ this.selectTimeframe('Today') }
className={ this.setActiveIf('Today') } type="button">Today</button>
इस समारोह है कौन सा:
selectTimeframe(timeframe) {
// this.setState({ timeframe });
}
^मैं setState बाहर टिप्पणी करने के लिए है अभी के लिए अन्यथा मुझे वह त्रुटि मिलेगी जो मैंने ऊपर पोस्ट की है और ऐप टूट जाता है।
मैं अपने निर्माता में यह है:
this.selectTimeframe = this.selectTimeframe.bind(this);
मैं इस answer here मिला, लेकिन यह मतलब नहीं है, मैं कैसे चर में पारित करने के लिए लगता है कि कर रहा हूँ? या वह कह रहा है कि हर अद्वितीय बटन को एक अद्वितीय कार्य की आवश्यकता होती है? इसे प्रस्तुत करने के अंदर बुलाए जाने से बचने के लिए?
पूर्ण कोड
import React from 'react';
export class TimeframeFilter extends React.Component {
constructor(props) {
super(props);
this.state = {
timeframe: 'Today'
};
this.selectTimeframe = this.selectTimeframe.bind(this);
this.setActiveIf = this.setActiveIf.bind(this);
}
componentDidMount() {
console.log('%c TimeframeFilter componentDidMount', 'background: #393939; color: #bada55', this.state);
}
selectTimeframe(timeframe) {
// this.setState({ timeframe });
}
setActiveIf(timeframe) {
return this.state.timeframe === timeframe ? 'btn btn-default active' : 'btn btn-default';
}
render() {
return (
<div className="fl">
<span className="label label-default mr10">Timeframe</span>
<div className="btn-group btn-group-sm mr20" role="group">
<button onClick={ this.selectTimeframe('Today') }
className={ this.setActiveIf('Today') } type="button">Today</button>
<button onClick={ this.selectTimeframe('Week') }
className={ this.setActiveIf('Week') } type="button">Week</button>
<button onClick={ this.selectTimeframe('Month') }
className={ this.setActiveIf('Month') } type="button">Month</button>
<button onClick={ this.selectTimeframe('Year') }
className={ this.setActiveIf('Year') } type="button">Year</button>
<button onClick={ this.selectTimeframe('All') }
className={ this.setActiveIf('All') } type="button">All</button>
</div>
</div>
);
}
}
export default TimeframeFilter;
धन्यवाद करना चाहते हैं मैं इसे अब मिलता है ... मैं समारोह हर बार बुला रहा था। '() => 'ठीक करता है। –
खुशी, मैं ठीक से व्याख्या करने में सक्षम था, :) –
यदि आप मदद करते हैं तो क्या आप इसे उत्तर के रूप में स्वीकार कर सकते हैं :) –