Интересно, как я могу переопределить реквизиты по умолчанию в родной библиотеке реагирования.
Ниже приведена библиотека:
Таким образом, если я хочу вызвать библиотеку, я просто использую
import qrcode from 'qrcodescanner'
<qrcode showMarker = {true} /> // change the showMarker props from false to true
Я хочу изменить значение по умолчанию с false на true, у кого-нибудь есть решение?
export default class QRCodeScanner extends Component {
static defaultProps = {
onRead: () => console.info('QR code scanned!'),
reactivate: false,
vibrate: true,
reactivateTimeout: 0,
fadeIn: true,
showMarker: false,
cameraType: 'back',
permissionDialogTitle: 'Info',
permissionDialogMessage: 'Need camera permission',
checkAndroid6Permissions: false,
cameraProps: {},
};
constructor(props) {
super(props);
this.state = {
scanning: false,
fadeInOpacity: new Animated.Value(0),
isAuthorized: false,
isAuthorizationChecked: false,
disableVibrationByUser: false,
};
this._handleBarCodeRead = this._handleBarCodeRead.bind(this);
}
render() {
return (
<View style = {[styles.mainContainer, this.props.containerStyle]}>
<View style = {[styles.infoView, this.props.topViewStyle]}>
{this._renderTopContent()}
</View>
{this._renderCamera()}
<View style = {[styles.infoView, this.props.bottomViewStyle]}>
{this._renderBottomContent()}
</View>
</View>
);
}
}





Вы хотели бы разветвить библиотеку и изменить реквизит по умолчанию, как показано ниже:
export default class QRCodeScanner extends Component {
static defaultProps = {
onRead: () => console.info('QR code scanned!'),
reactivate: false,
vibrate: true,
reactivateTimeout: 0,
fadeIn: true,
// update this default prop to true
showMarker: true,
cameraType: 'back',
permissionDialogTitle: 'Info',
permissionDialogMessage: 'Need camera permission',
checkAndroid6Permissions: false,
cameraProps: {},
};
constructor(props) {
super(props);
this.state = {
scanning: false,
fadeInOpacity: new Animated.Value(0),
isAuthorized: false,
isAuthorizationChecked: false,
disableVibrationByUser: false,
};
this._handleBarCodeRead = this._handleBarCodeRead.bind(this);
}
render() {
return (
<View style = {[styles.mainContainer, this.props.containerStyle]}>
<View style = {[styles.infoView, this.props.topViewStyle]}>
{this._renderTopContent()}
</View>
{this._renderCamera()}
<View style = {[styles.infoView, this.props.bottomViewStyle]}>
{this._renderBottomContent()}
</View>
</View>
);
}
}
Вы можете переопределить его в своем коде точно так же, как в исходном сообщении. Если вы не хотите делать это каждый раз, когда используете компонент, вы можете создать свой собственный компонент, который просто переопределяет этот реквизит и вместо этого использует свой собственный компонент.
Это нехорошая идея и не рекомендуется,
но если это последнее, что ты можешь сделать, то
перейдите в node_modules, найдите свою библиотеку и измените ее локально.
Примечание:
сначала не очень хорошая идея
только для обходного пути
будут доступны для вас и только для этого проекта
если установить библиотеку снова, она будет удалена
Я не хочу менять реквизит внутри библиотеки. Вместо этого я хочу изменить его в своем коде. У тебя есть решение?