이 페이지에서는 일단 컴포넌트에 진입하여 scan을 시작하면 stop 할 필요가 없다. 스캔은 계속 진행 하되, 새로고침 버튼을 누르면 BLEList를 초기화하고 다시 스캔한다.
즉, 만약 처음 메인페이지 진입 시 available 했던 디바이스가, 어떤 연유로 더이상 scan 되지 않을 수 도 있지 않은가? 그런 경우 새로고침을 누르면 화면에 반영이 되는 것이다.
ble_actions.js
export const emptyBLEList = () => (dispatch, getState, DeviceManager) => {
DeviceManager.stopDeviceScan()
return dispatch ({
type: EMPTY_BLE,
payload: []
})
}
main/index.js
class MainHome extends Component {
//바이크 리스트를 받아오는 액션을 실행합니다.
componentDidMount() {
this.activateButton()
}
activateButton = async () => {
await this.props.getVehicles()
const uuidList = this.props.VehiclesList.map((item) => item.uuid)
this.props._startScan(uuidList)
}
checkDeviceAvailable = (vehicleName) => {
const bleNameList = this.props.BLEList.map((item) => item.name)
return bleNameList.some((bleName) => bleName == vehicleName)
}
refresh = () => {
this.props.emptyBLEList()
setTimeout(() => this.props._startScan(), 100)
}
...
render () {
...
<View>
<Button
title="새로고침"
onPress={()=>this.refresh()}
/>
</View>
</View>
)
}
}
이 새로고침 버튼을 누르는 방식이 썩 맘에 들지도 않고, 또 최적화도 좀 개판인듯 해서 추후 리팩토링이 필요해 보인다.
'BABIL_PROJECT > BLE' 카테고리의 다른 글
BLE (0) | 2022.06.18 |
---|---|
BLE_WRITE (0) | 2022.04.26 |
BLE_SCAN 액션 수정 (babilScan.js) (0) | 2022.04.10 |
React 와 Redux 불변성 (Immutability in React and Redux) (0) | 2022.03.31 |
BLE-PLX (0) | 2022.01.29 |