diff --git a/packages/core/src/platform/patch/getDefaultOptions.ios.js b/packages/core/src/platform/patch/getDefaultOptions.ios.js index c98e3ea19..84b6442c4 100644 --- a/packages/core/src/platform/patch/getDefaultOptions.ios.js +++ b/packages/core/src/platform/patch/getDefaultOptions.ios.js @@ -492,7 +492,7 @@ export function getDefaultOptions ({ type, rawOptions = {}, currentInject }) { const { Provider, useSafeAreaInsets, GestureHandlerRootView } = global.__navigationHelper const pageConfig = Object.assign({}, global.__mpxPageConfig, currentInject.pageConfig) const Page = ({ navigation, route }) => { - const [enabled, setEnabled] = useState(true) + const [enabled, setEnabled] = useState(false) const currentPageId = useMemo(() => ++pageId, []) const intersectionObservers = useRef({}) usePageStatus(navigation, currentPageId) diff --git a/packages/webpack-plugin/lib/runtime/components/react/mpx-image.tsx b/packages/webpack-plugin/lib/runtime/components/react/mpx-image.tsx index 96bd53f19..b8c3ae7eb 100644 --- a/packages/webpack-plugin/lib/runtime/components/react/mpx-image.tsx +++ b/packages/webpack-plugin/lib/runtime/components/react/mpx-image.tsx @@ -403,32 +403,48 @@ const Image = forwardRef, ImageProps>((props, re } ) - return createElement(View, innerProps, - isSvg - ? createElement(SvgCssUri, { - uri: src, - onLayout: onSvgLoad, - onError: binderror && onSvgError, - style: extendObject( - { transformOrigin: 'top left' }, - modeStyle - ) - }) - : loaded && renderImage({ - source: { uri: src }, - resizeMode: resizeMode, - onLoad: bindload && onImageLoad, - onError: binderror && onImageError, - style: extendObject( - { - transformOrigin: 'top left', - width: isCropMode ? imageWidth : '100%', - height: isCropMode ? imageHeight : '100%' - }, - isCropMode ? modeStyle : {} - ) - }, enableFastImage) + const createBaseImage = (innerProps = {}) => { + return renderImage( + extendObject( + { + source: { uri: src }, + resizeMode: resizeMode, + onLoad: bindload && onImageLoad, + onError: binderror && onImageError, + style: extendObject( + { + transformOrigin: 'top left', + width: isCropMode ? imageWidth : '100%', + height: isCropMode ? imageHeight : '100%' + }, + isCropMode ? modeStyle : {} + ) + }, + innerProps + ), + enableFastImage + ) + } + + const SvgImage = createElement( + View, + innerProps, + createElement(SvgCssUri, { + uri: src, + onLayout: onSvgLoad, + onError: binderror && onSvgError, + style: extendObject( + { transformOrigin: 'top left' }, + modeStyle + ) + }) ) + + const BaseImage = createBaseImage(innerProps) + + const LayoutImage = createElement(View, innerProps, loaded && createBaseImage()) + + return isSvg ? SvgImage : isLayoutMode ? LayoutImage : BaseImage }) Image.displayName = 'mpx-image' diff --git a/packages/webpack-plugin/lib/runtime/components/react/mpx-input.tsx b/packages/webpack-plugin/lib/runtime/components/react/mpx-input.tsx index be27905bb..de7688bba 100644 --- a/packages/webpack-plugin/lib/runtime/components/react/mpx-input.tsx +++ b/packages/webpack-plugin/lib/runtime/components/react/mpx-input.tsx @@ -149,7 +149,7 @@ const Input = forwardRef, FinalInputProps 'parent-font-size': parentFontSize, 'parent-width': parentWidth, 'parent-height': parentHeight, - 'adjust-position': adjustPosition = true, + 'adjust-position': adjustPosition = false, bindinput, bindfocus, bindblur, @@ -182,6 +182,7 @@ const Input = forwardRef, FinalInputProps const [inputValue, setInputValue] = useState(defaultValue) const [contentHeight, setContentHeight] = useState(0) + const [selection, setSelection] = useState({ start: -1, end: -1 }) const styleObj = extendObject( { padding: 0, backgroundColor: '#fff' }, @@ -211,11 +212,11 @@ const Input = forwardRef, FinalInputProps } }, [value]) - const selection = useMemo(() => { - if (selectionStart >= 0 && selectionEnd >= 0) { - return { start: selectionStart, end: selectionEnd } - } else if (typeof cursor === 'number') { - return { start: cursor, end: cursor } + useEffect(() => { + if (typeof cursor === 'number') { + setSelection({ start: cursor, end: cursor }) + } else if (selectionStart >= 0 && selectionEnd >= 0 && selectionStart !== selectionEnd) { + setSelection({ start: selectionStart, end: selectionEnd }) } }, [cursor, selectionStart, selectionEnd]) @@ -320,7 +321,8 @@ const Input = forwardRef, FinalInputProps } const onSelectionChange = (evt: NativeSyntheticEvent) => { - bindselectionchange!( + setSelection(evt.nativeEvent.selection) + bindselectionchange && bindselectionchange( getCustomEvent( 'selectionchange', evt, @@ -428,7 +430,7 @@ const Input = forwardRef, FinalInputProps onBlur: bindblur && onInputBlur, onKeyPress: bindconfirm && onKeyPress, onSubmitEditing: bindconfirm && multiline && onSubmitEditing, - onSelectionChange: bindselectionchange && onSelectionChange, + onSelectionChange: onSelectionChange, onTextInput: onTextInput, onChange: onChange, onContentSizeChange: onContentSizeChange