我試圖構建一個簡單的單位轉換器來練習React.js。我希望能夠更改一個單位的值,例如:公斤,並讓其他單位例如:lb在屏幕上自動更改。請看這個網站給你一個想法:http://www.convertunits.com/from/lb/to/kg是否有可能在一個反應組件中有兩個狀態
我有以下代碼,它呈現,但單位不更新。我想知道的是:
- 對於一個零件有
two states
甚至準確嗎? 1 forKg
另一個用於lb
- 或者他們需要是
sibling components
?如果是這樣,他們將如何去更新對方的states
? - 如果可能在同一個組件中擁有兩個單元的狀態,那麼我在這裏做錯了什麼?
謝謝! (我有一個簡單明確的應用程序來渲染頁面)
import React from 'react';
export default class Converter extends React.Component {
render() {
return (
<div className="convert">
<Range />
</div>
);
}
}
class Range extends React.Component {
constructor(props) {
super(props);
this.state = { kg: null, lb: null };
}
kgClick() {
this.setState({ lb: state.kg * 2.2046 });
}
lbClick() {
this.setState({ kg: state.lb/2.2046 });
}
render() {
return (
<div>
<label> Kg: </label>
<input type="number" name="Kg" onChange={this.kgClick} value={this.state.kg} />
<label> Lb: </label>
<input type="number" name="Lb" onChange={this.lbClick} value={this.state.lb} />
</div>
);
}
}
後端邏輯:
var express = require('express');
var app = express();
app.set('port', (9000));
app.set('view engine', 'jsx');
app.set('views', __dirname + '/views');
app.engine('jsx', require('express-react-views').createEngine({ transformViews: false }));
require('babel/register')({
ignore: false
});
app.use('/', function(req, res) {
res.render('index', "");
});
app.listen(app.get('port'), function() {});
快看你的代碼,請確保您的事件處理程序,('lbCLick','kgClick')是得到正確的'這個'。使用ES6類的React組件不再將'this'自動綁定到非React方法[本博文](http://babeljs.io/blog/2015/06/07/react-on-es6-plus/)涵蓋了一些潛在的問題你面臨 – enjoylife
感謝您的偉大的文章! – Anita