


How does a subcomponent in Vue get the value of its parent component? (props implementation)
How to transfer data from parent component to child component in vue? The scope of component instances is isolated. This means that the parent component's data cannot be referenced directly within the child component's template. The data of the parent component needs to be sent to the child component through props. That is, props are the only interface for child components to access parent component data. Therefore, child components need to use props to reference parent components.
That is, props
is the only interface for child components to access parent component data.
A detailed explanation is:
A component can directly render the data in the template (double curly brackets).
Subcomponent cannot directly render the data of the parent element in the template.
If the child component wants to reference the data of the parent element, then declare a variable (such as a) in prop, and this variable can reference the data of the parent element. Then render this variable (the previous a) in the template, and what is rendered at this time is the data in the parent element.
1. Basic usage
As shown in the figure:
<p id="app1"> <!-- hello引用父元素的hello,它也可以引用message,greet,world等 --> <child :hello='hello'></child> </p> <script> var com1 = Vue.component('child',{ // 声明在prop中的变量可以引用父元素的数据 props:['hello'], // 这里渲染props中声明的那个hello template:'<p><p>{{ hello }}</p></p>', }) var app1 = new Vue ({ el: '#app1', data: { greet: { hello:'hello,', world: 'world', }, message: 'message1', } }) </script>
2. camelCase vs. kebab-case: Use camelCase naming in js and replace it with dash-delimited naming in html
<!-- 在 HTML 中使用 kebab-case --> <child my-message="hello!"></child> <script> Vue.component('child', { // 在 JavaScript 中使用 camelCase props: ['myMessage'], template: '<span>{{ myMessage }}</span>' }) </script>
3. One-way data flow: Props are one-way binding
When the properties of the parent component change, they will be transmitted to the child component, but not vice versa.
Every time the parent component is updated, all props of the child component will be updated to the latest values.
Don't change props inside child components. If you do this, Vue will warn you in the console.
In two cases, it is easy for us to be tempted to modify the data in prop:
After Prop is passed in as the initial value, the subcomponent wants to Used as local data;
#Prop is passed in as raw data and processed by the sub-component into other data output.
The correct response to these two situations is:
Define a local variable and initialize it with the value of prop:
props: ['initialCounter'], data: function () { return { counter: this.initialCounter } }
Define a calculated property , process the value of prop and return:
props: ['size'], computed: { normalizedSize: function () { return this.size.trim().toLowerCase() } }
Note that in JavaScript, objects and arrays are reference types, pointing to the same memory space. If prop is an object or array, changing it inside the child component will affect the parent component. status.
For example:
<p id="app3"> <my-component :object='object'></my-component> </p> <script src="http://vuejs.org/js/vue.min.js"></script> <script> // var mycom = Vue.component('my-component', { //添加一个input改变子组件的childOject,那么父元素的object也会被改变,但是Vue没有报错! template: '<p>{{ object.name }} is {{ object.age }} years old.<br><input v-model="childObject.name" type="text"></p>', props: ['object','school'], data: function () { // 子组件的childObject 和 父组件的object 指向同一个对象 return { childObject: this.object } } }); var app3 = new Vue({ el: '#app3', data: { object:{ name: 'Xueying', age: '21', }, school:'SCUT', }, }) </script>
Picture: changing childObject.name, object.name also changes
Figure: Console output app3.object.name
4. Props verification
You can specify validation rules for props. If the incoming data does not meet the requirements, Vue will issue a warning.
See the official documentation for specific verification rules: Prop verification rules
5. $parent
$parent can also be used to access the data of the parent component.
And the child component can directly modify the data of the parent component through $parent without reporting an error!
When you can use props, try to use props to pass data explicitly (you can clearly and quickly see which data of the parent component is referenced by the child component).
On the other hand, it is a bad idea to modify the data of the parent component directly in the child component. The one-way data flow of props does not have this concern.
Related recommendations:
vue slot How to display the parent component in the child component and pass
vue's props to implement the child component Change with parent component
The above is the detailed content of How does a subcomponent in Vue get the value of its parent component? (props implementation). For more information, please follow other related articles on the PHP Chinese website!

JavaScript runs in browsers and Node.js environments and relies on the JavaScript engine to parse and execute code. 1) Generate abstract syntax tree (AST) in the parsing stage; 2) convert AST into bytecode or machine code in the compilation stage; 3) execute the compiled code in the execution stage.

The future trends of Python and JavaScript include: 1. Python will consolidate its position in the fields of scientific computing and AI, 2. JavaScript will promote the development of web technology, 3. Cross-platform development will become a hot topic, and 4. Performance optimization will be the focus. Both will continue to expand application scenarios in their respective fields and make more breakthroughs in performance.

Both Python and JavaScript's choices in development environments are important. 1) Python's development environment includes PyCharm, JupyterNotebook and Anaconda, which are suitable for data science and rapid prototyping. 2) The development environment of JavaScript includes Node.js, VSCode and Webpack, which are suitable for front-end and back-end development. Choosing the right tools according to project needs can improve development efficiency and project success rate.

Yes, the engine core of JavaScript is written in C. 1) The C language provides efficient performance and underlying control, which is suitable for the development of JavaScript engine. 2) Taking the V8 engine as an example, its core is written in C, combining the efficiency and object-oriented characteristics of C. 3) The working principle of the JavaScript engine includes parsing, compiling and execution, and the C language plays a key role in these processes.

JavaScript is at the heart of modern websites because it enhances the interactivity and dynamicity of web pages. 1) It allows to change content without refreshing the page, 2) manipulate web pages through DOMAPI, 3) support complex interactive effects such as animation and drag-and-drop, 4) optimize performance and best practices to improve user experience.

C and JavaScript achieve interoperability through WebAssembly. 1) C code is compiled into WebAssembly module and introduced into JavaScript environment to enhance computing power. 2) In game development, C handles physics engines and graphics rendering, and JavaScript is responsible for game logic and user interface.

JavaScript is widely used in websites, mobile applications, desktop applications and server-side programming. 1) In website development, JavaScript operates DOM together with HTML and CSS to achieve dynamic effects and supports frameworks such as jQuery and React. 2) Through ReactNative and Ionic, JavaScript is used to develop cross-platform mobile applications. 3) The Electron framework enables JavaScript to build desktop applications. 4) Node.js allows JavaScript to run on the server side and supports high concurrent requests.

Python is more suitable for data science and automation, while JavaScript is more suitable for front-end and full-stack development. 1. Python performs well in data science and machine learning, using libraries such as NumPy and Pandas for data processing and modeling. 2. Python is concise and efficient in automation and scripting. 3. JavaScript is indispensable in front-end development and is used to build dynamic web pages and single-page applications. 4. JavaScript plays a role in back-end development through Node.js and supports full-stack development.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

Notepad++7.3.1
Easy-to-use and free code editor

DVWA
Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

SublimeText3 Mac version
God-level code editing software (SublimeText3)

SublimeText3 English version
Recommended: Win version, supports code prompts!
