Я впервые работаю с React, и у меня есть приложение, которое берет от пользователя два числа и предлагает ему выбрать оператора. я хочу взять эту информацию и отобразить ее в подкомпоненте, но я могу получить ее хоть убей.
<script type = "text/babel">
const main = ReactDOM.createRoot(document.getElementById('root'));
function Inputs(props) {
const[val1, setVal1] = React.useState(props.num1);
const[val2, setVal2] = React.useState(props.num2);
let symbols = ['+', '-', 'x', '÷'];
const[sym, setSym] = React.useState(props.opp);
const getVal = () => {
setVal1(first.value);
setVal2(second.value);
}
const getSym = (num) => {
setSym(symbols[num])
}
return(
<div>
<input id= 'first'></input>
<input id= 'second'></input>
<p>{val1}</p>
<p>{val2}</p>
<p>{sym}</p>
<button id= 'get' onClick = {getVal}>get</button>
<button id= 'add' onClick = {() => getSym(0)}>+</button>
<button id= 'subtract' onClick = {() => getSym(1)}>-</button>
<button id= 'multiply' onClick = {() => getSym(2)}>x</button>
<button id= 'divide' onClick = {() => getSym(3)}>÷</button>
<SubComponent />
</div>
)
}
class SubComponent extends React.Component {
render() {
return(
<p>SubComponent{this.props.value}</p>
)
}
}
main.render(<Inputs />);
Я пробовал использовать реквизит и еще кое-что, но без кубиков.
Почему вы смешиваете в своем коде функциональные компоненты и компоненты классов? В идеале вам следует придерживаться того или иного варианта.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я вижу, что вы не передаете никаких реквизитов при вызове «SubComponent», но пытаетесь получить доступ, например:
class SubComponent extends React.Component {
render() {
return(
<p>SubComponent{this.props.value}</p>
)
}
}Вместо этого вам следует передать реквизиты вашему «SubComponent», например <SubComponent value = {{val1, val2, sym}} />, а затем попытаться получить к ним доступ, например
class SubComponent extends React.Component {
render() {
const { val1, val2, sym } = this.props.value;
return (
<div>
<p>Value 1: {val1}</p>
<p>Value 2: {val2}</p>
<p>Symbol: {sym}</p>
</div>
);
}
}Конечно, вот более короткий и лаконичный ответ:
Чтобы передать данные из вашего компонента Inputs в SubComponent, вам необходимо правильно передать реквизиты. Обновите свой код следующим образом:
function Inputs() {
const [val1, setVal1] = React.useState('');
const [val2, setVal2] = React.useState('');
const [sym, setSym] = React.useState('');
const getVal = () => {
setVal1(document.getElementById('first').value);
setVal2(document.getElementById('second').value);
}
const getSym = (num) => {
setSym(['+', '-', 'x', '÷'][num]);
}
return (
<div>
<input id='first' />
<input id='second' />
<button onClick = {getVal}>Get</button>
<button onClick = {() => getSym(0)}>+</button>
<button onClick = {() => getSym(1)}>-</button>
<button onClick = {() => getSym(2)}>x</button>
<button onClick = {() => getSym(3)}>÷</button>
<SubComponent val1 = {val1} val2 = {val2} sym = {sym} />
</div>
)
}
class SubComponent extends React.Component {
render() {
const { val1, val2, sym } = this.props;
return (
<div>
<p>Value 1: {val1}</p>
<p>Value 2: {val2}</p>
<p>Operator: {sym}</p>
</div>
)
}
}
const main = ReactDOM.createRoot(document.getElementById('root'));
main.render(<Inputs />);
Это должно решить проблему с передачей данных в ваш подкомпонент.
Вы не передаете никаких реквизитов в свой компонент
<Inputs />.