#reactjs #state
#реагирует на #государство
Вопрос:
здесь я хочу получить доступ к «this.state.select1» и «this.state.select2» в качестве атрибутов объекта фактора в обработчике событий handleClick. как я помещаю их в «», чтобы они не стали строкой? потому что выход дает мне Нэн.
Это желаемая часть моего кода:
const factor = { kilometer: 1, meter: 1000, centimeter: 100000, millimeter: 1000000 } class App extends React.Component { constructor(props) { super(props); this.state = { text: '', select1: '', select2: '', result: 0 } } handleChange1 = (e) =gt; { this.setState({ text: e.target.value } ); } handleChange2 = (e) =gt; { this.setState({ select1: e.target.value } ); } handleChange3 = (e) =gt; { this.setState({ select2: e.target.value } ); } handleClick = () =gt; { this.setState({ result: (parseInt(this.state.text) * factor['this.state.select1']) / factor['this.state.select2'] }); }
выход:
Комментарии:
1. Вы не хотите
factor['this.state.select1']
, вы хотитеfactor[this.state.select1]
(обратите внимание на отсутствие кавычек)2. @ВОЗРАСТ это сработало. большое спасибо
3. @Бен, большое спасибо. но фактор[this.state.select1] дает мне NaN на выходе. фактор[
${this.state.select1}
] это сработало. за «$» и после «}» есть » ` «. это не отображается.4. Я подозреваю, что это потому, что он чувствителен к регистру, у вашего
factor
объекта все написано в нижнем регистре, но на вашем скриншоте первая буква прописная. Вы можете использоватьtoLowerCase
, чтобы это работало.5. @Ben, конечно, значения, существующие в теге опции внутри тега select, указаны в нижнем регистре. и я думаю, что это должно совпадать с именами факторов. правильно ли это?