#reactjs
Вопрос:
Я хочу иметь возможность переключаться между компонентами в одном файле. Я хочу, чтобы по умолчанию был указан счет ShowAccount. Кнопка для отображения учетной записи редактирования, которая скрывает учетную запись.
Макет того, о чем я думаю:
import React from 'react';
import EditAccount from './editacc';
import ShowAccount from './showacc';
const Toggle = () => {
return(
<>
if (EditAccount === Active) {
hide <ShowAccount />
show <EditAccount />
} else {
show <ShowAccount />
}
</>
);
};
export default Toggle;
Index.js
import React from 'react';
import './acc.css';
import Header from '../../../Header';
import Toggle from './content/toggle';
const Myaccount = () => {
return (
<>
<Header />
<br />
<Toggle />
</>
);
};
export default Myaccount;
Комментарии:
1. В этом вообще нет никакого смысла. У вас есть условный оператор в JSX, где у вас могут быть только выражения (и даже тогда они должны быть заключены в фигурные скобки), вы сравниваете компонент с неопределенной переменной Active и случайно придумали операторы show и hide.
2. Я сказал, что это макет того, что я хочу, чтобы он делал. Очевидно, что это не сработает таким образом, иначе бы так и было… все, что я хочу сказать, это то, что если один компонент отображается, я хочу, чтобы другой был скрыт. Я не хотел, чтобы кто-то подумал, что я на самом деле пытаюсь сделать это таким образом. @jonrsharpe
3. Я бы посоветовал вам прочитать, например reactjs.org/docs/conditional-rendering.html , а не просто гадать.
Ответ №1:
Вы можете обрабатывать с помощью состояния и визуализировать условный компонент.
import React from 'react';
import EditAccount from './editacc';
import ShowAccount from './showacc';
const Toggle = () => {
const [isEditAccount, setEditAccount] = React.useState(false);
const handleToggleView = () => {
setEditAccount(!isEditAccount)
};
return (
<>
<button onClick={handleToggleView} >
Toggle View
</button>
{isEditAccount ? <EditAccount /> : <ShowAccount />}
</>
);
};
export default Toggle;
Ответ №2:
https://codesandbox.io/s/react-new?file=/src/App.js
class App extends React.Component {
state = {
isAcc: true
};
render() {
return (
<div>
<button onClick={() => this.setState({ isAcc: !this.state.isAcc })}>
Toggle View
</button>
{this.state.isAcc ? <Acc /> : <Edit />}
</div>
);
}
}
const Acc = () => <h1>Account</h1>;
const Edit = () => <h1>Edit</h1>;
ReactDOM.render(<App />, document);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>