बदल गया है मुझे लगता है कि उपयोगकर्ता के लिए कुल मूल्य renders मेरी प्रतिक्रिया अनुप्रयोग में एक घटक है। जब वह मूल्य बढ़ जाता है, तो मैं शोर खेलना चाहता हूं। मैंने सोचा कि उस घटक के भीतर जो कुल दिखाता है वह उस शोर को खेलने के लिए एक अच्छी जगह होगी।nextProps हमेशा componentWillReceiveProps में this.props के समान हैं, भले ही रंगमंच की सामग्री
तो मैं घटक के लिए एक componentWillReceiveProps
विधि जोड़ा, और उस में, मैं दो योग की गणना: total
this.props
से की जाती है और nextTotal
nextProps
से की जाती है।
मेरे आश्चर्य करने के लिए, यहाँ तक कि जब मान बदलते हैं, और कुल योग परिवर्तन, nextTotal
और total
हमेशा ही हैं। तो सशर्त है कि जब मैं कुल हो जाता है तो मैं फायरिंग करना चाहता हूं।
मैं एक सरल, एकल घटक उदाहरण ऊपर लिखा था। JSfiddle।
var Hello = React.createClass({
componentWillReceiveProps: function(nextProps) {
var total = 0;
this.props.vals.forEach(val => total+= val);
var nextTotal = 0;
nextProps.vals.forEach(val => nextTotal+= val);
console.log(total, nextTotal)
if (nextTotal > total) {
//never runs
console.log('moving up');
}
},
render: function() {
var total = 0;
vals.forEach(val => total+= val)
return (
<div>{total}</div>
)
}
});
var vals = [1, 21, 452, 123];
setInterval(renderReact, 1000)
function renderReact() {
vals.push(10);
ReactDOM.render(
<Hello
vals={vals}
/>,
document.getElementById('container')
);
}
आप देख सकते हैं, हर दूसरे यह कहते हैं 10 vals
सरणी है, जो कुल चाल 1. द्वारा मतलब है लेकिन अगर आप कंसोल खोलें, आप देख सकते हैं कि total
और nextTotal
हमेशा एक ही कर रहे हैं, और moving up
कभी लॉग नहीं किया गया है।
मैं स्पष्ट रूप से कुछ गलतफहमी कर रहा हूँ, और अगर किसी को समझा सकता है कि मेरी गलतफहमी है, और मैं कैसे प्राप्त करना चाहिए कि मैं क्या करने के लिए जा रहा हूँ, कि शानदार होगा। बजाय एक नया संपत्ति के साथ बुला से -
क्यों नहीं दो सरणियों प्रवेश करने का प्रयास? यह बाहर की जाँच आप उन दोनों से दस धकेलने रखना ... https: //jsfiddle.net/ydaso4cs/2/ जो एक ही बात कर रहे हैं ... – JordanHendrix
आप तत्व को सीधे सरणी गुजर रहे हैं। 'this.props.vals' और 'nextProps.vals' एक ही ऑब्जेक्ट का संदर्भ दे रहे हैं। – PitaJ
न केवल आप एक ही सरणी का संदर्भ दे रहे हैं, आपका घटक अपडेट नहीं हो रहा है क्योंकि आप एक बार रेंडर कर रहे हैं। मुझे कोई कोड नहीं दिख रहा है जो अद्यतन कर रहा है। –