mirror of
https://github.com/zoriya/react-native-svg.git
synced 2026-06-03 23:16:13 +00:00
optimize: remove use of rest props
This commit is contained in:
@@ -56,9 +56,10 @@ export function SvgAst({ ast, override }) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function SvgXml({ xml, ...props }) {
|
export function SvgXml(props) {
|
||||||
|
const { xml, override } = props;
|
||||||
const ast = useMemo(() => xml && parse(xml), [xml]);
|
const ast = useMemo(() => xml && parse(xml), [xml]);
|
||||||
return (ast && <SvgAst ast={ast} override={props} />) || null;
|
return (ast && <SvgAst ast={ast} override={override || props} />) || null;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function fetchText(uri) {
|
async function fetchText(uri) {
|
||||||
@@ -68,14 +69,15 @@ async function fetchText(uri) {
|
|||||||
|
|
||||||
const err = console.error.bind(console);
|
const err = console.error.bind(console);
|
||||||
|
|
||||||
export function SvgUri({ uri, ...props }) {
|
export function SvgUri(props) {
|
||||||
|
const { uri } = props;
|
||||||
const [xml, setXml] = useState();
|
const [xml, setXml] = useState();
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
fetchText(uri)
|
fetchText(uri)
|
||||||
.then(setXml)
|
.then(setXml)
|
||||||
.catch(err);
|
.catch(err);
|
||||||
}, [uri]);
|
}, [uri]);
|
||||||
return (xml && <SvgXml xml={xml} {...props} />) || null;
|
return (xml && <SvgXml xml={xml} override={props} />) || null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Extending Component is required for Animated support.
|
// Extending Component is required for Animated support.
|
||||||
@@ -83,8 +85,7 @@ export function SvgUri({ uri, ...props }) {
|
|||||||
export class SvgFromXml extends Component {
|
export class SvgFromXml extends Component {
|
||||||
state = {};
|
state = {};
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
const { xml } = this.props;
|
this.parse(this.props.xml);
|
||||||
this.parse(xml);
|
|
||||||
}
|
}
|
||||||
componentDidUpdate(prevProps) {
|
componentDidUpdate(prevProps) {
|
||||||
const { xml } = this.props;
|
const { xml } = this.props;
|
||||||
@@ -94,23 +95,24 @@ export class SvgFromXml extends Component {
|
|||||||
}
|
}
|
||||||
parse(xml) {
|
parse(xml) {
|
||||||
try {
|
try {
|
||||||
const ast = parse(xml);
|
this.setState({ ast: parse(xml) });
|
||||||
this.setState({ ast });
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e);
|
console.error(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
render() {
|
render() {
|
||||||
const { ast } = this.state;
|
const {
|
||||||
return ast ? <SvgAst ast={ast} override={this.props} /> : null;
|
props,
|
||||||
|
state: { ast },
|
||||||
|
} = this;
|
||||||
|
return ast ? <SvgAst ast={ast} override={props.override || props} /> : null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class SvgFromUri extends Component {
|
export class SvgFromUri extends Component {
|
||||||
state = {};
|
state = {};
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
const { uri } = this.props;
|
this.fetch(this.props.uri);
|
||||||
this.fetch(uri);
|
|
||||||
}
|
}
|
||||||
componentDidUpdate(prevProps) {
|
componentDidUpdate(prevProps) {
|
||||||
const { uri } = this.props;
|
const { uri } = this.props;
|
||||||
@@ -120,15 +122,17 @@ export class SvgFromUri extends Component {
|
|||||||
}
|
}
|
||||||
async fetch(uri) {
|
async fetch(uri) {
|
||||||
try {
|
try {
|
||||||
const xml = await fetchText(uri);
|
this.setState({ xml: await fetchText(uri) });
|
||||||
this.setState({ xml });
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e);
|
console.error(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
render() {
|
render() {
|
||||||
const { xml } = this.state;
|
const {
|
||||||
return xml ? <SvgFromXml xml={xml} {...this.props} /> : null;
|
props,
|
||||||
|
state: { xml },
|
||||||
|
} = this;
|
||||||
|
return xml ? <SvgFromXml xml={xml} override={props} /> : null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user