플러터(Flutter) 앱을 개발하다 보면 앱 상태를 검색하고 변경해야 하는 경우가 많습니다. Redux와 같은 상태 관리 라이브러리를 사용할 때, useSelector 훅을 사용하면 상태를 간편하게 검색하고 변경할 수 있습니다.
useSelector 훅 소개
Redux의 useSelector 훅은 Redux 스토어에서 특정 상태를 선택하는 데 사용됩니다. useSelector 훅은 함수 컴포넌트 내에서 사용되며, Redux 스토어에 접근하여 필요한 상태를 검색할 수 있습니다. 또한 해당 상태가 변경될 때 자동으로 업데이트됩니다.
useSelector 훅 사용 방법
다음은 useSelector 훅을 사용하여 Redux 스토어에서 특정 상태를 검색하는 간단한 예제입니다.
import 'package:flutter_redux/flutter_redux.dart';
import 'package:redux/redux.dart';
class AppState {
// Redux 스토어의 상태 모델
String userName;
}
void main() {
final store = Store<AppState>(
// Redux 리듀서와 초기 상태 설정
...
);
runApp(MyApp(store: store));
}
class MyApp extends StatelessWidget {
final Store<AppState> store;
const MyApp({Key key, this.store}) : super(key: key);
@override
Widget build(BuildContext context) {
return StoreProvider(
store: store,
child: MaterialApp(
// 앱 구성
home: MyHomePage(),
),
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return StoreConnector<AppState, String>(
converter: (store) => store.state.userName,
builder: (context, userName) {
return Text('Username: $userName');
},
);
}
}
위의 예제에서 StoreConnector
위젯을 사용하여 Redux 스토어에서 userName
상태를 검색하고, 해당 상태를 화면에 출력하고 있습니다.
이제 useSelector 훅을 사용하여 동일한 기능을 하는 함수 컴포넌트를 만들어보겠습니다.
import 'package:flutter_redux/flutter_redux.dart';
import 'package:redux/redux.dart';
import 'package:redux_hooks/redux_hooks.dart';
class MyApp extends HookWidget {
@override
Widget build(BuildContext context) {
final userName = useSelector((AppState state) => state.userName);
return Text('Username: $userName');
}
}
useSelector
훅을 사용하면 위젯이 간소화되고, Redux 스토어에서 필요한 상태를 직접 검색할 수 있습니다.
마무리
이제 useSelector 훅을 사용하여 Redux 스토어의 상태를 간편하게 검색하고 변경하는 방법에 대해 알아보았습니다. Redux를 사용하는 경우, useSelector 훅을 활용하여 더욱 간결하고 유연한 상태 관리를 할 수 있습니다.
위 내용은 Redux와 redux_hooks 라이브러리를 기반으로 설명하였습니다. 더 자세한 내용은 공식 문서를 참고하시기 바랍니다.
Happy coding! 😊